据我所知,逻辑AND &&运算符的短路效果如下:
假设我有表达a
并且b
然后a && b
是一样的a ? b : a
,因为
如果a
是真的那么结果将是b
,如果a
是假的那么结果将是a
(甚至没有试图解决b
)
这就是为什么以下(演示)代码抛出一个SyntaxError:
var add = function(a,b) { b && return a+b; // if(b) return a+b ... }
有没有办法与return语句短路?
在&&
二元运算符需要两个部分是表达式.
return something
是一个语句,但不是表达式(它不会产生值,因为当函数结束时,值不会有用).
只是用
if (b) return a+b;
具有更易于阅读的代码的额外好处.
阅读更多 :
表达式与声明
return语句(EcmaScript规范)
逻辑运算符(MDN)