以下のように、バージョン B での f1 の実行がバージョン A と異なるのはなぜですか?
// バージョン A
var f = {};
for( var i=0 ; i<3 ; i++ ) {
f[i] = function() { alert(i); }
}
// バージョン B
var f = {};
for( var i=0 ; i<3 ; i++ ) {
f[i] = function(j) { return function() { alert(j); }; }(i);
}