首页 > 解决方案 > 可以用return语句作为表达式吗

问题描述

最近我发现有时候这样更方便

condition && fnWhenTrue()

if(condition){
    fnWhenTrue()
}

老实说,我已经爱上了它,并开始在任何有意义的地方使用它。但是我无法做

condition && return

因为 return 是一个语句而不是一个表达式。有没有办法解决这个问题,或者这不是一个有效的用例,我应该停止。

如果像这样,我可以使用内联实现类似的效果

if(condition) return

但这不一样。

提前致谢

标签: javascript

解决方案


不,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,那么会有什么价值呢?


推荐阅读