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