function F(){
var arr=[],i;
for(i=0;i<3;i++){
arr[i]=function(){
return i;
};
}
return arr;
}
arr[0]();//3
arr[1]();//3
arr[2]();//3
function F(){
var arr=[],i;
for(i=0;i<3;i++){
arr[i]=function(){
return i;
};
}
return arr;
}
arr[0]();//3
arr[1]();//3
arr[2]();//3
此题用断点方式很容易就看出来了,其实就是函数执行时机的问题,函数是在调用时才执行,循环执行完后,i=3,再调用数组内的函数时,i只能为3.