【问题标题】:short circuit with a return statement带有返回语句的短路
【发布时间】:2016-03-21 10:08:28
【问题描述】:

据我了解,使用逻辑 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语句短路?

【问题讨论】:

    标签: javascript short-circuiting


    【解决方案1】:

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

    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

      【讨论】:

        猜你喜欢
        • 2014-03-10
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-26
        • 1970-01-01
        • 2017-08-23
        • 1970-01-01
        相关资源
        最近更新 更多