如果
true && (function () { console.log('executed'); })()
没关系,那么为什么
true && continue;
或
true && (continue);
不起作用,例如V8(节点)抛出:
SyntaxError: Unexpected token continue
答案 0 :(得分:2)
在JavaScript中,有表达式和语句。语句可以包含表达式,但不能反过来。语句true && false;
是一个表达式语句。
&&
需要两个表达式。
true
和(function() { ... })()
都是表达式 - 一个评估为true
的布尔表达式,一个函数表达式(包含在括号内,然后调用),评估为undefined
。
continue
是语句,因此您无法使用&&
。您必须使用if
,因为if
接受在条件为真时运行的语句。
根据规范,这是正确的行为,不应该是V8特定的。
答案 1 :(得分:0)
因为continue
不是返回某个值的表达式。完整的布尔表达式及其部分必须返回一些值。