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