Junior
Mi a különbség a for...in és a for...of ciklusok között?
sobes.tech MI
Válasz az MI-től
A for...in ciklus az objektum enumerálható tulajdonságain (kulcsain) iterál, beleértve a prototípus láncban lévő tulajdonságokat is.
A for...of ciklus az iterálható objektumok (Array, Map, Set, String, arguments stb.) értékein iterál. Nem iterál a prototípus tulajdonságain.
for...in |
for...of |
|
|---|---|---|
| Iterál | Objektum kulcsain (tulajdonságokon) | Iterálható objektumok értékein |
| Használható | Objektumok | Tömbök, stringek, Map, Set és más iterálható objektumok |
| Prototípus | Iterál a prototípus tulajdonságain | Nem iterál a prototípus tulajdonságain |
| Sorrend | Nem garantált nem egész számú kulcsok esetén | Garantált tömbök esetén (index szerint) |
Példa for...in:
const obj = { a: 1, b: 2 };
for (const key in obj) {
console.log(key, obj[key]); // Kiírja: "a 1", "b 2"
}
Példa for...of:
const arr = [1, 2, 3];
for (const value of arr) {
console.log(value); // Kiírja: 1, 2, 3
}
Általánosságban, tömbök és hasonló struktúrák bejárására a for...of a preferált, míg objektum tulajdonságainak bejárására a for...in (gyakran hasOwnProperty-vel együtt, hogy kizárja a prototípus tulajdonságait).