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

for...of по обычному объекту

Вопрос

Что произойдёт?

const prices = { tea: 100, coffee: 200 };
for (const p of prices) {
  console.log(p);
}

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

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

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

Коротко

Правильный ответ: TypeError: prices is not iterable. У обычных объектов нет [Symbol.iterator], поэтому for...of бросает TypeError.

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

  1. Выведет значения 100 и 200
  2. TypeError: prices is not iterableправильный ответ
  3. Выведет ключи tea и coffee
  4. Ничего не выведет и не упадёт

Разбор

У обычных объектов нет [Symbol.iterator], поэтому for...of бросает TypeError. Ключи перебирает for...in или Object.keys, значения Object.values, пары Object.entries(prices), который возвращает итерируемый массив. Объекты специально не сделали итерируемыми: непонятно, что перебирать по умолчанию, ключи или значения.

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

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