我有这段代码:
err ? (reject(err), return)
: resolve(db)
返回:
SyntaxError:意外的令牌返回
然而这有效:
err ? (reject(err), console.log('test'))
: resolve(db)
为什么在这种情况下不能使用该返回?在为多个语句使用三元运算符时,还有其他替代方法可以停止函数执行吗?
答案 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);