Junior
Qual è la differenza tra i cicli for...in e for...of?
sobes.tech AI
Risposta dell'AI
Il ciclo for...in itera sulle chiavi (proprietà) delle proprietà enumerabili dell'oggetto, inclusi quelle nella sua catena di prototipi.
Il ciclo for...of itera sui valori degli oggetti iterabili (Array, Map, Set, String, arguments, ecc.). Non itera sulle proprietà del prototipo.
for...in |
for...of |
|
|---|---|---|
| Itera su | Chiavi (proprietà) degli oggetti | Valori degli oggetti iterabili |
| Usato con | Oggetti | Array, stringhe, Map, Set e altri oggetti iterabili |
| Prototipo | Itara sulle proprietà del prototipo | Non itera sulle proprietà del prototipo |
| Ordine di iterazione | Non garantito per chiavi non intere | Garantito per array (per indice) |
Esempio for...in:
const obj = { a: 1, b: 2 };
for (const key in obj) {
console.log(key, obj[key]); // Stampa: "a 1", "b 2"
}
Esempio for...of:
const arr = [1, 2, 3];
for (const value of arr) {
console.log(value); // Stampa: 1, 2, 3
}
In generale, per scorrere array e strutture simili, è preferibile usare for...of, mentre per le proprietà degli oggetti for...in (spesso in combinazione con hasOwnProperty per escludere le proprietà del prototipo).