Выбор ответа Junior Итераторы и генераторы обновлено

Что делает объект итерируемым

Вопрос

Что нужно добавить объекту, чтобы по нему работал for...of?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Метод Symbol.iterator, возвращающий итератор с next(). for...of вызывает у объекта Symbol.iterator и затем дёргает next() у полученного итератора, пока не придёт done: true. length и индексы делают объект массивоподобным: его понимает Array.from, но не for...of.

Варианты ответа

  1. Свойство length и числовые ключи 0, 1, 2, как у массива
  2. Метод next(), который возвращает { value, done }
  3. Метод [Symbol.iterator](), возвращающий итератор с next()правильный ответ
  4. Метод forEach, который for...of вызовет для каждого элемента

Разбор

for...of вызывает у объекта [Symbol.iterator]() и затем дёргает next() у полученного итератора, пока не придёт done: true. length и индексы делают объект массивоподобным: его понимает Array.from, но не for...of. Один только next() делает объект итератором, но не итерируемым (если только он не возвращает сам себя из [Symbol.iterator]). forEach к протоколу итерации отношения не имеет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.