2015-12-15 46 views
8

据我了解,与逻辑与& &运营商短路短路工作方式类似以下内容:用一个return语句

假设我有表达ab然后a && b相同a ? b : a

如果a是truthy那么结果将是b和 如果a是falsy那么结果将是a(甚至没有试图解决b

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

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

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

回答

11

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

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

只需使用

if (b) return a+b; 

有一个更简单的额外的好处来读取代码。

了解更多:

2

没有,return是一个语句,你不能把它作为一个组成部分AND表达式。

但如果你需要,由于某种原因,您可以将您的代码到一个return声明:

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

是(或多或少),相当于

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

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