Thi*_*gri 6

第11.14节 "逗号运算符(,)" 对此进行了解释:

逗号操作员ECMA Spec

的*NoIn具有相同的结构,除了在不包括使用的in关键字,11.8节"关系运算符":

关系运算符ECMA Spec

规范说:

需要"NoIn"变体以避免in操作in符在for语句中与操作符混淆操作符.

由于in可以以两种方式使用:

for (var x in foo) { ... }
Run Code Online (Sandbox Code Playgroud)

要么:

if ('x' in foo) { ... }
Run Code Online (Sandbox Code Playgroud)

"NoIn"变体使得无法in在for循环的第一个表达式中使用上面的第二个版本.因此,以下代码无效:

for (y = 'x' in foo; y; y = false) { ... }
Run Code Online (Sandbox Code Playgroud)