Junior
Kuo skiriasi for...in ir for...of ciklai?
sobes.tech AI
Atsakymas iš AI
Ciklas for...in iteruoja per objekto enumeruojamas savybes (raktus), įskaitant jų prototipo grandinės savybes.
Ciklas for...of iteruoja per iteruojamų objektų (Array, Map, Set, String, arguments ir kt.) reikšmes. Jis neiteruoja per prototipo savybes.
for...in |
for...of |
|
|---|---|---|
| Iteruoja per | Objektų raktus (savybes) | Iteruojamų objektų reikšmes |
| Naudojama su | Objektais | Masyvais, eilutėmis, Map, Set ir kitais iteruojamais objektais |
| Prototipas | Iteruoja per prototipo savybes | Neiteruoja per prototipo savybes |
| Eilės tvarka | Neužtikrinta, ypač ne sveikųjų skaičių raktams | Užtikrinta masyvams (pagal indeksą) |
Pavyzdys for...in:
const obj = { a: 1, b: 2 };
for (const key in obj) {
console.log(key, obj[key]); // Išves: "a 1", "b 2"
}
Pavyzdys for...of:
const arr = [1, 2, 3];
for (const value of arr) {
console.log(value); // Išves: 1, 2, 3
}
Apskritai, geriau naudoti for...of iteracijai per masyvus ir panašias struktūras, o for...in — per objektų savybes (dažnai kartu su hasOwnProperty išskiriant prototipo savybes).