Sobes.tech
Junior

Aký je rozdiel medzi cyklami for...in a for...of?

sobes.tech AI

Odpoveď od AI

Cyklus for...in prechádza klávesy (vlastnosti) enumerovateľných vlastností objektu, vrátane vlastností v jeho reťazci prototypov.

Cyklus for...of prechádza hodnoty iterovateľných objektov (Array, Map, Set, String, arguments a pod.). Neprechádza vlastnosti prototypu.

for...in for...of
Prechádza Kľúče (vlastnosti) objektu Hodnoty iterovateľných objektov
Používa sa s Objektmi Pole, reťazce, Map, Set a iné iterovateľné objekty
Prototyp Prechádza vlastnosti prototypu Neprechádza vlastnosti prototypu
Poradie prechodu Nie je garantované pre necelé čísla kľúčov Garantované pre polia (podľa indexu)

Príklad for...in:

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

Príklad for...of:

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

Vo všeobecnosti je vhodnejšie použiť for...of na prechádzanie po poliach a podobných štruktúrach, a for...in na prechádzanie vlastností objektov (často v kombinácii s hasOwnProperty, aby sa vylúčili vlastnosti prototypu).