Я делаю немного глубокого погружения в цикл и столкнулся ExpressionNoIn
в спецификации на http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.3Что означает выражение ExpressionNoIn в спецификации ECMAScript?
Что это значит?
Я делаю немного глубокого погружения в цикл и столкнулся ExpressionNoIn
в спецификации на http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.3Что означает выражение ExpressionNoIn в спецификации ECMAScript?
Что это значит?
Это объясняется в section 11.14 "Comma Operator (,)":
*NoIn
имеет ту же структуру, за исключением того, что в исключает использование in
ключевого слова, раздел 11.8 "реляционные операторы" :
спецификация говорит:
Варианты «NoIn» необходимы, чтобы избежать путаницы оператора
in
в реляционном выражении с операторомin
в оператореfor
.
Как in
может использоваться двумя способами:
for (var x in foo) { ... }
Или:
if ('x' in foo) { ... }
Варианты «Ноин» находятся там, чтобы сделать его невозможно использовать второй вариант in
выше в первом выражении цикла for
. Таким образом, следующий код недействителен:
for (y = 'x' in foo; y; y = false) { ... }
ExpressionNoIn
- это не терминал, из которого могут быть получены все выражения, ожидание операции in
(то есть 'prop' in obj
).
Следуйте A3 от дна (где 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
Я думаю, что делает его легче различают for
петли от for/in
петель.
Хорошо, я читал это 4 раза, и это начинает иметь смысл. Это плотный и глубокий материал. –
Нажмите. Спасибо :) –