为什么会输出10 次10 push进去的不应该是 1 - 9吗 这个坑求大神解答function save_i(){ var a = []; for(var i = 0;i<10;i++){ a[i] = function(){ return i; } } return a; }var c = save_i();for(var i = 0;i<10;i++){ console.log(c[i]()); //10次 10}
1 回答

烙印99
TA贡献1829条经验 获得超13个赞
只需要在for循环执行时,创建一个闭包函数将i值保存起来,既可以依次输出
function save_i(){
var a = [];
for(var i = 0;i<10;i++){
a[i] = function(i){
return function() {
return i;
};
}(i);
}
return a;
}
var c = save_i();
for(var i = 0;i<10;i++){
console.log(c[i]());
//已经变为依次输出
}
添加回答
举报
0/150
提交
取消