Je suis très perplexe à propos de ce code:
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();
De ma compréhension, il doit imprimer 0,1,2,3,4 (n'est-ce pas le concept de fermetures?).
Au lieu de cela, il imprime 5,5,5,5,5.
J'ai essayé de Rhino et Firefox.
Quelqu'un pourrait expliquer ce comportement pour moi? Merci à l'avance.