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

Using return as one of multiple statements in ternary expression

我有这个代码:

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

其中 return 个:

SyntaxError: Unexpected token return

然而这有效:

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

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

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

你也不能说a = 1 + return;

Is there other alternative to stop function execution while using ternary operator for multiple statements?

if 语句...

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

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

Is there other alternative to stop function execution while using ternary operator for multiple statements?

三元运算符在包含隐式 return 语句的意义上与 if else 不同。所以为了在条件满足后尽快return,你可以按照下面的方式做。

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