据我了解,逻辑AND&& amp;短路。运算符的工作方式如下:
假设我有表达式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语句短路?
答案 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无论如何。