在布尔语句中使用continue / break [V8]

时间:2012-04-06 14:00:53

标签: javascript v8

如果

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

没关系,那么为什么

true && continue;

true && (continue);

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

SyntaxError: Unexpected token continue

2 个答案:

答案 0 :(得分:2)

在JavaScript中,有表达式和语句。语句可以包含表达式,但不能反过来。语句true && false;是一个表达式语句。

&&需要两个表达式。

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

continue语句,因此您无法使用&&。您必须使用if,因为if接受在条件为真时运行的语句。

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

答案 1 :(得分:0)

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