带有返回语句的短路

时间:2015-12-15 14:51:51

标签: javascript short-circuiting

据我了解,逻辑AND&& amp;短路。运算符的工作方式如下:

假设我有表达式ab,那么a && ba ? b : a相同,因为

如果a是真实的,那么结果将是b和 如果a是假的,那么结果将是a(甚至没有尝试解析b

这就是为什么以下(演示)代码抛出一个SyntaxError:

var add = function(a,b) {
  b && return a+b; // if(b) return a+b
  ...
}

有没有办法用return语句短路?

2 个答案:

答案 0 :(得分:12)

&&二元运算符需要两个部分都是表达式

return something是一个声明,但不是表达式(它不会产生一个值,因为当函数结束时,值不会有用)。

只需使用

if (b) return a+b;

具有更易于阅读的代码的附加好处。

了解更多:

答案 1 :(得分:2)

不,return是一个声明,您不能将其用作AND表达式的一部分。

如果由于某种原因需要,您可以将代码转换为单个return语句:

if (b) return a+b;
/* else */ ...

(或多或少)等同于

return b && a+b || (...);

当然,在您用手写的任何代码中,用眼睛阅读,you should just an if statement无论如何。