Scopri il seguente frammento di codice HTML/JavaScript:Qual è lo scopo di una variabile Javascript dichiarata in un ciclo for()?
<html>
<head>
<script type="text/javascript">
var alerts = [];
for(var i = 0; i < 3; i++) {
alerts.push(function() { document.write(i + ', '); });
}
for (var j = 0; j < 3; j++) {
(alerts[j])();
}
for (var i = 0; i < 3; i++) {
(alerts[i])();
}
</script>
</head><body></body></html>
Questo uscite:
3, 3, 3, 0, 1, 2
che non è quello che mi aspettavo - mi aspettavo l'uscita 0, 1, 2, 0, 1, 2,
I (erroneamente) presupponeva che la funzione anonima inserita nell'array si comportasse come una chiusura, acquisendo il valore di i
assegnato quando viene creata la funzione, ma in realtà sembra che i
si comporta come una variabile globale.
Qualcuno può spiegare cosa sta succedendo allo scopo di i
in questo esempio di codice e perché la funzione anonima non sta acquisendo il suo valore?
Risposta corretta - grazie! - ma ho accettato la risposta di Pointy perché "il mio privato" + idaho mi ha fatto ridere ad alta voce ... –