Why is running f1 different in Version B than in Version A, below?
// Version A
var f = {};
for( var i=0 ; i<3 ; i++ ) {
f[i] = function() { alert(i); }
}
// Version B
var f = {};
for( var i=0 ; i<3 ; i++ ) {
f[i] = function(j) { return function() { alert(j); }; }(i);
}