时间:2021-07-01 10:21:17 帮助过:4人阅读
function box(){
var arr = [];
for(var i=0;i<5;i++){
arr[i]=function(){
return i;
}
}
return arr;
}
var b = box();
console.log(b.length);
for(var i=0;i<b.length;i++){
console.log(b[i]())
}上面的代码会打印出5个5
因为b[i]()调用的是匿名函数,然而匿名函数并没有自我执行,所以等到调用的时候,box()已经执行完毕。。。。
下面改一下:
function box(){
var arr = [];
for(var i=0;i<5;i++){
arr[i]=(
function(num){
console.log("ccc="+num)
return num;
}
)(i)
}
return arr;
}
var b = box();
console.log(b.length);
for(var i=0;i<b.length;i++){
console.log(b[i])
}执行结果:
Html代码
num=0 num=1 num=2 num=3 num=4 5 0 1 2 3 4