SyntaxError: for-in loop head declarations may not have initializers
ÐÑклÑÑение "for-in loop head declarations may not have initializers" Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð² ÑÑÑогом Ñежиме, когда в ÑпÑавлÑÑÑей конÑÑÑÑкÑии Ñикла for...in пÑиÑваиваеÑÑÑ Ð·Ð½Ð°Ñение пеÑеменной-иÑеÑаÑоÑÑ, напÑÐ¸Ð¼ÐµÑ for (var i = 0 in obj). РнеÑÑÑогом Ñежиме Ñакже бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÑÑ Ð¸ÑклÑÑение, еÑли пеÑеменнаÑ-иÑеÑаÑÐ¾Ñ Ð¾Ð±ÑÑвлена ÑеÑез const, напÑÐ¸Ð¼ÐµÑ for (const i = 0 in obj).
СообÑение
SyntaxError: for-in loop variable declaration may not have an initializer. (V8-based) SyntaxError: for-in loop head declarations may not have initializers (Firefox) SyntaxError: a lexical declaration in the head of a for-in loop can't have an initializer (Firefox) SyntaxError: Cannot assign to the loop variable inside a for-in loop header. (Safari)
Тип оÑибки
SyntaxError ÑолÑко в ÑÑÑогом Ñежиме.
ЧÑо не Ñак?
УпÑавлÑÑÑÐ°Ñ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¸Ñ Ñикла for...in ÑодеÑÐ¶Ð¸Ñ Ð²ÑÑажение иниÑиализаÑии. ÐÑÑгими Ñловами, пÑи Ñоздании Ñикла пÑиÑваиваеÑÑÑ Ð·Ð½Ð°Ñение пеÑеменной-иÑеÑаÑоÑÑ. РнеÑÑÑогом Ñежиме ÑÑа конÑÑÑÑкÑÐ¸Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ, а поведение Ñавно for (var i = 0 in obj). Ð ÑÑÑогом же Ñежиме, бÑÐ´ÐµÑ Ð¾Ñибка ÑинÑакÑиÑа SyntaxError. Ðднако, даже в неÑÑÑогом Ñежиме пÑиÑвоение знаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменной-иÑеÑаÑоÑÑ, обÑÑвленной ÑеÑез const, вÑоде for (const i = 0 in obj), пÑиведÑÑ Ðº оÑибке ÑинÑакÑиÑа SyntaxError.
ÐÑимеÑÑ
ÐаннÑй пÑÐ¸Ð¼ÐµÑ Ð¿ÑиведÑÑ Ðº оÑибке ÑинÑакÑиÑа:
"use strict";
const obj = { a: 1, b: 2, c: 3 };
for (const i = 0 in obj) {
console.log(obj[i]);
}
// SyntaxError: for-in loop head declarations may not have initializers
ÐÑавилÑнÑй Ñикл for-in
ÐÑжно ÑдалиÑÑ Ð¿ÑиÑвоение знаÑÐµÐ½Ð¸Ñ (i = 0) из иниÑиализаÑии Ñикла for-in.
"use strict";
const obj = { a: 1, b: 2, c: 3 };
for (const i in obj) {
console.log(obj[i]);
}
ÐÑеÑаÑÐ¸Ñ Ð¼Ð°ÑÑива
Цикл for...in не должен иÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð¸ÑеÑаÑии маÑÑива. ÐÑ Ð½Ð°Ð¼ÐµÑевалиÑÑ Ð¸ÑполÑзоваÑÑ Ñикл for вмеÑÑо Ñикла for-in Ð´Ð»Ñ Ð¸ÑеÑаÑии Array? Цикл for позволÑÐµÑ Ñакже ÑÑÑановиÑÑ Ð¸Ð½Ð¸ÑиализаÑоÑ:
const arr = ["a", "b", "c"];
for (let i = 2; i < arr.length; i++) {
console.log(arr[i]);
}
// "c"