2

如果

true && (function () { console.log('executed'); })()

可以,那为什么

true && continue;

或者

true && (continue);

不起作用,例如 V8 (Node) 抛出:

SyntaxError: Unexpected token continue
4

2 回答 2

2

在 JavaScript 中,有表达式和语句。语句可以包含表达式,但反之则不行。该语句true && false;是表达式语句。

&&需要两个表达式。

true和都是表达式- 一个布尔表达式评估为(function() { ... })(),一个函数表达式(包裹在括号内然后调用)评估为。trueundefined

continue是一个语句,所以你不能使用&&. 您必须使用if,因为if确实接受在条件为真时运行的语句。

根据规范,这是正确的行为,不应该是特定于 V8 的。

于 2012-04-06T14:12:42.527 回答
0

因为continue不是返回一些值的表达式。完整的布尔表达式及其部分必须返回一些值。

于 2012-04-06T14:06:04.910 回答