Symbol.iterator?Symbol.iterator — это встроенный символ, который определяет поведение итерации по умолчанию для объекта. Любой объект, который реализует этот символ, становится итерируемым, то есть его можно использовать с циклами for...of, оператором spread (...) и деструктуризацией.
Когда JavaScript встречает цикл for...of или оператор spread, он автоматически вызывает метод [Symbol.iterator]() объекта. Этот метод должен вернуть объект-итератор — объект с методом next(), который при каждом вызове возвращает пары { value, done }.
value — текущий элемент последовательностиdone — булево значение, указывающее, завершена ли итерацияconst myIterable = {
[Symbol.iterator]() {
let count = 0;
return {
next() {
count++;
return count <= 3
? { value: count, done: false }
: { value: undefined, done: true };
}
};
}
};
for (const num of myIterable) console.log(num); // 1, 2, 3
console.log([...myIterable]); // [1, 2, 3]
Array, String и Map уже имеют Symbol.iterator реализованный по умолчанию[Symbol.iterator]()next() возвращал { value, done } при каждом вызовеfor...of, spread и деструктуризациейSymbol.iterator — это известный встроенный Symbol, который необходимо вручную реализовать для всех объектов перед использованием с циклами for...of.
Новый — ещё не проверен сообществом
Вы