不能使用`throw` after或(||)运算符

时间:2017-10-02 18:36:38

标签: javascript

我无法在一般的互联网搜索中找到,也无法通过阅读manual为什么无法使用此代码:

let a;
a || throw Error(`'a' is undefined or falsy`);

我得到SyntaxError: Unexpected token throw

有谁知道为什么不能用这种方式来编码一个抛出?

2 个答案:

答案 0 :(得分:6)

throw关键字表示throw 语句,这意味着它必须是一个语句。

||运算符左右部分的部分只能是表达式,而不是语句。

请参阅Statement Semantics

上的ECMAScript语法部分

答案 1 :(得分:2)

a || b这样的代码是一个表达式;它的代码最终会评估为一个值。

在当今的JavaScript中,throw语句;可能有副作用但没有值的代码。这可能会在未来发生变化:cf。 https://github.com/tc39/proposal-throw-expressions