Junior
Care este diferența dintre buclele for...in și for...of?
sobes.tech AI
Răspuns de la AI
Bucla for...in iterează peste cheile (proprietățile) enumerable ale obiectului, inclusiv cele din lanțul său de prototipuri.
Bucla for...of iterează peste valorile obiectelor iterabile (Array, Map, Set, String, arguments etc.). Nu iterează peste proprietățile prototipului.
for...in |
for...of |
|
|---|---|---|
| Iterează pe | Chei (proprietăți) ale obiectelor | Valori ale obiectelor iterabile |
| Se folosește cu | Obiecte | Arrays, stringuri, Map, Set și alte obiecte iterabile |
| Prototip | Iterează pe proprietățile prototipului | Nu iterează pe proprietățile prototipului |
| Ordinea de parcurgere | Nu este garantată pentru chei non-integer | Este garantată pentru array-uri (după index) |
Exemplu for...in:
const obj = { a: 1, b: 2 };
for (const key in obj) {
console.log(key, obj[key]); // Afișează: "a 1", "b 2"
}
Exemplu for...of:
const arr = [1, 2, 3];
for (const value of arr) {
console.log(value); // Afișează: 1, 2, 3
}
În general, pentru parcurgerea array-urilor și a structurilor similare, este preferabil să folosiți for...of, iar pentru parcurgerea proprietăților obiectelor — for...in (adesea în combinație cu hasOwnProperty pentru a exclude proprietățile din prototip).