javascript - 可以用return语句作为表达式吗
问题描述
最近我发现有时候这样更方便
condition && fnWhenTrue()
比
if(condition){
fnWhenTrue()
}
老实说,我已经爱上了它,并开始在任何有意义的地方使用它。但是我无法做
condition && return
因为 return 是一个语句而不是一个表达式。有没有办法解决这个问题,或者这不是一个有效的用例,我应该停止。
如果像这样,我可以使用内联实现类似的效果
if(condition) return
但这不一样。
提前致谢
解决方案
不,return
在此答案时不是 JavaScript / ECMAScript 中的表达式。
如果您不想编写多行/冗长的代码,可以使用短if
符号:
if (condition) return;
仅比 2 个字符长condition && return;
!
提醒一下,val = exp1 && exp2
是一个大致等价于的表达式:
let val;
if (exp1) {
val = exp2;
} else {
val = exp1;
}
(在我上面的例子中,exp1 被评估了 2 次,而在 exp1 中只有一次exp1 && exp2
)。
就像在 JS 语言设计中可能想要说服你的东西一样,你可以这样做:
let someResult;
// later...
someResult = exp1 && exp2;
那么someResult
如果你有 areturn
而不是 exp1 和 exp2,那么会有什么价值呢?
推荐阅读
- sql - SQL求和列中的所有值
- javascript - 为 React 中的常见问题切换获取“TypeError:无法读取未定义的类列表”
- python - 导入模块和运行烧瓶应用程序的正确方法
- c# - Directory.EnumerateFiles 搜索模式不适用于文件共享
- java - 如何让我的对角线从我的星号框的左下方开始打印?
- javascript - 谷歌电子表格脚本停止并给出“超出执行时间”
- parsing - 为什么我不能在返回位置使用大括号式宏表达式的方法?
- python - 使用 SSIS 执行进程任务运行导入熊猫的 Python 脚本时出现问题
- c# - 我需要帮助修复我的密门密码
- aws-lambda - 在 lambda nodejs init 期间调用异步函数是否安全?