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).