Sobes.tech
Junior

Каква е разликата между цикли for...in и for...of?

sobes.tech AI

Отговор от 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, за да се изключат свойствата на прототипа).