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