有如下两段代码, 第一段代码执行后弹出3次对话框都显示2,
而第二段代码执行后弹出3次对话框分别显示0,1,2.
第二段代码在for循环里比第一段代码多了一层匿名函数自执行.
这时什么原因,谁能解释一下:
[code="java"]function test( num ) {
var funArray = new Array();
for (var i = 0; i < num; i++) {
var trueValue = i;
funArray.push( function() {
alert( trueValue );
});
}
return funArray;
}
var val = test( 3 );
for(var i = 0; i < val.length; i++) {
vali;
}[/code]
[code="java"]function test( num ) {
var funArray = new Array();
for (var i = 0; i < num; i++) {
(function() {
var trueValue = i;
funArray.push( function() {
alert( trueValue );
});
})();
}
return funArray;
}
var val = test( 3 );
for(var i = 0; i < val.length; i++) {
vali;
}[/code]