私はこのコードについて非常に困惑しています:
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 を試してみました。誰かが私にこの振る舞いを説明してもらえますか?