用 return 语句短路

short circuit with a return statement

据我了解,使用逻辑 AND && 运算符进行短路的工作方式如下:

假设我有表达式 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语句短路?

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

return something 是语句而不是表达式(它不产生值,因为函数结束时值没有用)。

只需使用

if (b) return a+b;

代码更易于阅读。

阅读更多:

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

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

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

(或多或少)等同于

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

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