使用return作为三元表达式中的多个语句之一

时间:2016-10-06 12:12:00

标签: javascript ternary-operator

我有这段代码:

  err ? (reject(err), return)
      : resolve(db)

返回:

  

SyntaxError:意外的令牌返回

然而这有效:

err ? (reject(err), console.log('test'))
    : resolve(db)

为什么在这种情况下不能使用该返回?在为多个语句使用三元运算符时,还有其他替代方法可以停止函数执行吗?

2 个答案:

答案 0 :(得分:3)

这是一个三元表达式,整个表达式必须求值为一个值,因此只包含表达式。

你也不能说a = 1 + return;

  

还有其他替代方法可以在使用时停止执行功能   多语句的三元运算符?

if声明......

if (err) { reject(err); return }

resolve(db);

答案 1 :(得分:1)

err ? (reject(err), return)
    : resolve(db)
  

还有其他替代方法可以在使用时停止执行功能   多语句的三元运算符?

在包含隐式if else语句的意义上,三元运算符与return不同。因此,为了在条件满足后尽快返回,您可以正确地执行以下操作。

return err ? reject(err)
           : resolve(db);