Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. JavaScript ссылки на ошибки
  5. SyntaxError: for-in loop head declarations may not have initializers

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

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.

Примеры

Данный пример приведёт к ошибке синтаксиса:

js
"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.

js
"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 позволяет также установить инициализатор:

js
const arr = ["a", "b", "c"];for (let i = 2; i < arr.length; i++) {  console.log(arr[i]);}// "c"

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp