Код: Выделить всё
for ( [lookahead ≠ let [] LeftHandSideExpression in Expression ) Statement
for ( [lookahead ∉ { let, async of }] LeftHandSideExpression of AssignmentExpression )
Почему существует разница между let и let [ отрицательный просмотр вперед?
В операторе for-in разрешен [ в качестве отрицательного просмотра вперед, я предполагаю, что этот синтаксис не будет охвачен строкой выше:< /p>
Код: Выделить всё
for (let[a] in [1]) ;
Если бы это было описано в строке выше, это означало бы «назначить ключ [1] для (let)[a]».
p>
Вместо этого синтаксис покрыт другой строкой, которая делает его объявлением let с шаблоном уничтожения массива.
Это имеет смысл.Это описано и действительно в строке выше в случае for-in:
Код: Выделить всё
for (let.a in [1]) ;
Но это недопустимо для случая for-of:
Код: Выделить всё
for (let.b of [1]) ;
Неперехваченная синтаксическая ошибка: выражение X в «for (X of Y)» не должно начинаться с 'let'
Node и chrome говорят:
SyntaxError: Левый -сторона цикла for-of не может начинаться с 'let'.
Для цикла for-of должно быть больше однозначности, которая расширяет ограничения для этого цикла. Что это за однозначность?< /п>
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-ecmascri