【问题标题】:Using return as one of multiple statements in ternary expression [duplicate]使用return作为三元表达式中的多个语句之一[重复]
【发布时间】:2017-02-15 04:17:28
【问题描述】:

我有这个代码:

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

返回:

SyntaxError: 意外的令牌返回

但这是可行的:

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

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

【问题讨论】:

  • 你只能有表达式。 return 不是表达式的一部分

标签: javascript ternary-operator


【解决方案1】:

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

你也不能说a = 1 + return;

是否有其他替代方法可以在使用时停止函数执行 多个语句的三元运算符?

if 声明...

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

resolve(db);

【讨论】:

  • 哦,我明白了,现在我明白了。
【解决方案2】:
err ? (reject(err), return)
    : resolve(db)

是否有其他替代方法可以在使用时停止函数执行 多个语句的三元运算符?

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

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

【讨论】:

  • 只有在 err 为真时才需要 return
猜你喜欢
  • 2016-05-08
  • 2011-03-19
  • 2014-03-16
  • 2019-09-28
  • 2016-12-18
  • 2015-01-12
  • 2019-12-30
  • 2020-02-14
  • 1970-01-01
相关资源
最近更新 更多