Javascript 用return语句短路

Javascript 用return语句短路,javascript,short-circuiting,Javascript,Short Circuiting,据我所知,使用逻辑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 ... } 有没有一种方法可以使返回语句短路?二进制运算符需要两个部分都是表达式 retu

据我所知,使用逻辑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 something
是一条语句,但不是一个表达式(它不会生成值,因为当函数结束时,值不会有用)

只用

if (b) return a+b;
还有一个更易于阅读的代码

阅读更多:

  • (EcmaScript规范)
  • (MDN)

否,
return
是一条语句,不能将其用作AND表达式的一部分

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

if (b) return a+b;
/* else */ ...
(或多或少)等同于

return b && a+b || (...);
当然,不管怎样,在任何手工编写并用眼睛阅读的代码中