So cos'è for... in
loop (iterates over key), ma ne ho sentito parlare per la prima volta for... of
(iterates over value).
Sono confuso con il for... of
ciclo. Non ho ricevuto l'aggettivo. Questo è il codice qui sotto:
var arr = [3, 5, 7];
arr.foo = "hello";
for (var i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (var i of arr) {
console.log(i); // logs "3", "5", "7"
// it is does not log "3", "5", "7", "hello"
}
Quello che ho è, for... of
scorre sui valori delle proprietà. Allora perché non registra (return) "3", "5", "7", "hello"
invece di "3", "5", "7"
? mafor... in
ciclo scorre su ogni tasto ( "0", "1", "2", "foo"
). Qui il for... in
ciclo scorre anche sulla foo
chiave. Ma for... of
non scorre sul valore della foo
proprietà, ad es "hello"
. Perché è così?
Per farla breve:
Qui consolo for... of
loop. Dovrebbe registrare "3", "5", "7","hello"
ma qui registra "3", "5", "7"
. Perché ?
for ... of
stato introdotto nella lingua per risolvere i problemi relativi all'uso for ... in
con gli array. Array.prototype
potrebbe essere modificato in modo tale che siano disponibili proprietà extra, rendendo non sicuro iterarli poiché potresti ottenere chiavi non numeriche che non ti aspettavi.
of
(per ... dei loop) , poiché richiede un comportamento specifico della funzione, piuttosto che una panoramica generale.
for <key> in
" e " for <value> of
" e rendersi conto che IE non supportafor..of