Sobes.tech
Junior

for...in va for...of tsikllari o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

for...in tsikli ob'ektning ko'rsatiladigan xususiyatlari (kalitlar) bo'yicha iteratsiya qiladi, shu jumladan uning prototip zanjiridagi xususiyatlar.

for...of tsikli esa, iteratsiya qilinadigan ob'ektlarning (Array, Map, Set, String, arguments va boshqalar) qiymatlari bo'yicha iteratsiya qiladi. U prototip xususiyatlari bo'yicha iteratsiya qilmaydi.

for...in for...of
Iteratsiya qiladigan Ob'ektlarning kalitlari (xususiyatlari) Iteratsiya qilinadigan ob'ektlarning qiymatlari
Bilan ishlatiladi Ob'ektlar Arraylar, satrlar, Map, Set va boshqa iteratsiya qilinadigan ob'ektlar
Prototip Prototip xususiyatlari bo'yicha iteratsiya Prototip xususiyatlari bo'yicha iteratsiya qilmaydi
Tartib Garantiya qilinmaydi, ayniqsa raqamli bo'lmagan kalitlar uchun Arraylar uchun (indeks bo'yicha) garantiya

for...in misoli:

const obj = { a: 1, b: 2 };
for (const key in obj) {
  console.log(key, obj[key]); // Chiqish: "a 1", "b 2"
}

for...of misoli:

const arr = [1, 2, 3];
for (const value of arr) {
  console.log(value); // Chiqish: 1, 2, 3
}

Umuman olganda, massivlar va shunga o'xshash tuzilmalar bo'yicha yurish uchun for...of afzalroq, ob'ekt xususiyatlarini yurish uchun esa for...in (odatda hasOwnProperty bilan birga, prototip xususiyatlarini chiqarib tashlash uchun).