Выбор ответа Junior Итераторы и генераторы спрашивают часто обновлено
for...in против for...of на массиве
Вопрос
Что выведут два цикла?
const letters = ['a', 'b'];
for (const x in letters) console.log(x);
for (const x of letters) console.log(x);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Первый: '0', '1' (строки); второй: a, b. for...in перебирает перечисляемые ключи объекта, включая унаследованные, а у массива ключи это строки '0' и '1', не числа. for...of использует протокол итерации и выдаёт значения.
Варианты ответа
- Первый:
'0','1'(строки); второй:a,bправильный ответ - Оба цикла выведут значения:
a,bи сноваa,b - Первый: значения
a,b; второй: индексы0,1 - Первый: числа
0,1; второй: значенияa,b
Разбор
for...in перебирает перечисляемые ключи объекта, включая унаследованные, а у массива ключи это строки '0' и '1', не числа. for...of использует протокол итерации и выдаёт значения. Поэтому для массивов нужен for...of (или методы массива), а for...in предназначен для обычных объектов, да и там его заменяют Object.keys.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.