Javascript “ExpressionNoIn”在ECMAScript规范中是什么意思?

Javascript “ExpressionNoIn”在ECMAScript规范中是什么意思?,javascript,ecmascript-5,Javascript,Ecmascript 5,我正在深入研究for循环,并在 什么意思?ExpressionNoIn是一个非终端,除操作中的(即obj中的'prop')外,所有表达式都可以从中派生出来 从底部(定义了ExpressionNoIn)到第一个*NoIn非终端,该非终端不再包含(不同的)*NoIn非终端: RelationalExpression : ShiftExpression RelationalExpression < ShiftExpression RelationalExpression

我正在深入研究for循环,并在


什么意思?

ExpressionNoIn
是一个非终端,除操作中的
(即obj中的
'prop')外,所有表达式都可以从中派生出来

从底部(定义了
ExpressionNoIn
)到第一个
*NoIn
非终端,该非终端不再包含(不同的)
*NoIn
非终端:

RelationalExpression :
    ShiftExpression
    RelationalExpression < ShiftExpression
    RelationalExpression > ShiftExpression
    RelationalExpression <= ShiftExpression
    RelationalExpression >= ShiftExpression
    RelationalExpression instanceof ShiftExpression
    RelationalExpression in ShiftExpression

RelationalExpressionNoIn :
    ShiftExpression
    RelationalExpressionNoIn < ShiftExpression
    RelationalExpressionNoIn > ShiftExpression
    RelationalExpressionNoIn <= ShiftExpression
    RelationalExpressionNoIn >= ShiftExpression
    RelationalExpressionNoIn instanceof ShiftExpression
关系表达式:
移位加压
关系表达式<移位表达式
关系表达式>移位表达式
关系表达式=移位表达式
移位表达式的关系表达式实例
移位表达中的关系表达
关系表达式NOIN:
移位加压
关系表达noin移位表达式
关系表达式noin=移位表达式
移位加压瞬间的关系式
我想这会更容易区分
for
循环和
for/in
循环。

这在“逗号运算符(,)”中有解释:

*NoIn
具有相同的结构,除了在第11.8节“关系运算符”中排除了在
关键字中使用

说明书上说:

需要使用“NoIn”变体,以避免将关系表达式中的
in
运算符与
for
语句中的
in
运算符混淆

中的As
可通过两种方式使用:

for (var x in foo) { ... }
或:

“NoIn”变体的存在是为了在
for
循环的第一个表达式中使用上述
的第二个版本。因此,以下代码无效:

for (y = 'x' in foo; y; y = false) { ... }

好吧,我已经读了4遍了,它开始有意义了。这是浓密而深沉的东西,点击了。谢谢:)
for (y = 'x' in foo; y; y = false) { ... }