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
js顺序执行,首先执行所有的循环,在执行的过程中以此arr[0]= function(){return i;},arr[1]= function(){return i;},arr[2]= function(){return i;}同时i循环后编程3,接着调用arr[0]()等调用的时候,此时作用域内的i是3,所以依次都会是3.
PS: 这题应该会先执行arr = F()把,否则会报错呀~~