Sono molto perplesso su questo codice:JavaScript non supporta le chiusure con variabili locali?
var closures = [];
function create() {
for (var i = 0; i < 5; i++) {
closures[i] = function() {
alert("i = " + i);
};
}
}
function run() {
for (var i = 0; i < 5; i++) {
closures[i]();
}
}
create();
run();
Dalla mia comprensione dovrebbe stampare 0,1,2,3,4 (non è questo il concetto di chiusure?).
Invece stampa 5,5,5,5,5.
Ho provato Rhino e Firefox.
Qualcuno potrebbe spiegarmi questo comportamento? Thx in anticipo.
Quindi quale sarebbe la sua soluzione (sono curioso anche adesso)? –
La risposta di Jon ha la soluzione. –
È un bell'articolo, ma sembra che ci siano alcune differenze nel modo in cui le chiusure sono implementate tra C# e Javascript. Questo rende l'articolo non così utile per quanto riguarda la domanda dell'OP. –