function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){
console.log(i + ' --- 初始化循环');
result[i] = function(){
console.log(i +' --- 匿名函数返回');
return i;
};
}
// 匿名函数中还引用了 i ,return后,并不会销毁
return result;
}
// 初始化的时候,在createFunctions 中,
// i还是被引用着,并不会随着函数返回而销毁
var funcs = createFunctions();
console.log(funcs);
//every function outputs 10
for (var i=0; i < funcs.length; i++){
console.log(funcs[i]() + '--外层循环');
}
function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){
result[i] = function(num){
// 此处会一直引用 num ,不会销毁 num
return function(){
return num;
};
}(i); // 每次循环都把 i 的值传递给 num
}
return result;
}
var funcs = createFunctions();
//every function outputs 10
for (var i=0; i < funcs.length; i++){
console.log(funcs[i]() + " ---外层循环");
}