Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. JavaScript ссылки на ошибки
  5. TypeError: 'x' is not iterable (Тип ошибки 'x' не является итерационным)

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

View in EnglishAlways switch to English

TypeError: 'x' is not iterable (Тип ошибки 'x' не является итерационным)

Сообщение

TypeError: "x" не является итерационным (Firefox, Chrome)TypeError: 'x' не является функцией или её возвращаемое значение не является итерационным (Chrome)

Тип ошибки

TypeError

Что пошло не так?

Значение, которое даётся как правая сторона for...of или как аргумент функции, такой какPromise.all илиTypedArray.from, не является итерационным объектом. Повторяемое может быть, встроенный итератор типа, такие какArray,String илиMap, генератор результатом, или объект, реализующий итератор протокол.

Примеры

Итерация по свойствам объекта

В JavaScript,object не повторяется, если они реализуют итерационный протокол . Поэтому нельзя использовать for...of для перебора свойств объекта.

js
var obj = { France: "Paris", England: "London" };for (let p of obj) {  // TypeError: obj не является итерационным  // …}

Вместо этого вы должны использоватьObject.keys илиObject.entries, для итерации по свойствам или записям объекта.

js
var obj = { France: "Paris", England: "London" };// Iterate over the property names:for (let country of Object.keys(obj)) {  var capital = obj[country];  console.log(country, capital);}for (const [country, capital] of Object.entries(obj))  console.log(country, capital);

Другим вариантом для этого варианта использования может быть использованиеMap:

js
var map = new Map();map.set("France", "Paris");map.set("England", "London");// Iterate over the property names:for (let country of map.keys()) {  let capital = map[country];  console.log(country, capital);}for (let capital of map.values()) console.log(capital);for (const [country, capital] of map.entries()) console.log(country, capital);

Итерация по генератору

Генераторы - это функции, вызываемые для создания итерационного объекта.

js
function* generate(a, b) {  yield a;  yield b;}for (let x of generate) // TypeError: генерация не является итерационной  console.log(x);

Если они не вызываются, то объектFunction, соответствующий генератору, можно вызвать, но нельзя выполнить итерацию. Вызов генератора создаёт итерационный объект, который будет выполнять итерацию по значениям, полученным во время выполнения генератора.

js
function* generate(a, b) {  yield a;  yield b;}for (let x of generate(1, 2)) console.log(x);

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

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp