Junior
131
questionbank
В чем разница между циклами for...in и for...of?
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 для исключения свойств прототипа).