Sobes.tech
Back to questions
Junior
140
questionbank

В чем разница между циклами for...in и for...of?

Answer from AI

sobes.tech AI

Цикл for...in итерирует по ключам (свойствам) перечисляемых свойств объекта, включая свойства его прототипа по цепочке.

Цикл for...of итерирует по значениям итерируемых объектов (Array, Map, Set, String, arguments и т.д.). Он не итерирует по свойствам прототипа.

for...in for...of
Итерирует по Ключам (свойствам) объектов Значениям итерируемых объектов
Используется с Объектами Массивами, строками, Map, Set и другими итерируемыми объектами
Прототип Итерирует по свойствам прототипа Не итерирует по свойствам прототипа
Порядок обхода Не гарантируется для не-целочисленных ключей Гарантируется для массивов (по индексу)

Пример for...in:

const obj = { a: 1, b: 2 };
for (const key in obj) {
  console.log(key, obj[key]); // Выведет: "a 1", "b 2"
}

Пример for...of:

const arr = [1, 2, 3];
for (const value of arr) {
  console.log(value); // Выведет: 1, 2, 3
}

В общем случае, для перебора массивов и подобных структур предпочтительнее использовать for...of, а для перебора свойств объектов - for...in (часто в сочетании с hasOwnProperty для исключения свойств прототипа).