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