Я очень озадачен этим кодом:
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();
По моему мнению, он должен печатать 0,1,2,3,4 (разве это не концепция закрытия?).
Вместо этого он печатает 5,5,5,5,5.
Я попробовал Rhino и Firefox.
Может ли кто-нибудь объяснить это поведение мне? спасибо заранее.