SyntaxError: for-in loop head declarations may not have initializers(SyntaxError: объявления for-in loop head могут не иметь инициализаторов)
Message
SyntaxError: объявления for-in loop head не могут иметь инициализатора (Edge) SyntaxError: объявления for-in loop head могут не иметь инициализаторов (Firefox) SyntaxError: объявление переменной цикла for-in может не иметь инициализатора. (Chrome)
Тип ошибки
SyntaxError
только в строгом режиме.
Что пошло нетак?
Глава цикла for...in содержит выражение инициализатора. То есть переменная объявляется и присваивается значение |for (var i = 0 in obj)|
. В нестрогом режиме это объявление head игнорируется и ведет себя как |for (var i in obj)|
. Однако в строгом режиме создается синтаксическая ошибка.
Примеры
Данный пример дает SyntaxError:
"use strict";
var obj = {a: 1, b: 2, c: 3 };
for (var i = 0 in obj) {
console.log(obj[i]);
}
SyntaxError: объявления for-in loop head могут не иметь инициализаторов
Правильный for-in loop
Можно удалить инициализатор (i = 0) в начале цикла for-in.
"use strict";
var obj = {a: 1, b: 2, c: 3 };
for (var i in obj) {
console.log(obj[i]);
}
Итерация массива
Цикл for...in не должен использоваться для итерации массива. Вы намеревались использовать цикл for вместо цикла for-in для итерации Array
? Цикл for позволяет также установить инициализатор:
var arr = [ "a", "b", "c" ]
for (var i = 2; i < arr.length; i++) {
console.log(arr[i]);
}
// "c"