var arr = [];
for(**var** i = 0; i < 10; i++){
arr[i] = function(){
return i;
};
}
for(var j = 0; j < arr.length; j++){
console.log(arr[j]() + " ");
} //10个10
var和let的区别在哪呢,为什么声明不一样就会变成不一样的结果呢?还有第一个函数为什么i最后都等于10了?i这里是局部变量还是全局变量呢?局部变量不应该for循环完就自动被GC了吗 还是说第一个函数存在闭包所以保留了对i的引用,所以i不会被GC了
var arr = [];
for(**let** i = 0; i < 10; i++){
arr[i] = function(){
console.log(i);
};
}
for(var j = 0; j < arr.length; j++){
console.log(arr[j]());
}//0-9
一只萌萌小番薯
相关分类