Js匿名闭包
看到一个js教程,以前没琢磨
function box() {
var arr=[];
for (var i = 0; i < 5; i++) {
arr[i] = function () {
return i;
}
}
i = 10;
return arr;
}
var b = box();
for (var i = 0; i < 5; i++) {
alert(b[i]())// 5个 10
}
与下面的区别
function box() {
var arr=[];
for (var i = 0; i < 5; i++) {
//直接让匿名方法执行返回值 参数直接使用外部的
arr[i] = (function () {
return i;
})();
//或者这样
/*
//直接让匿名方法执行返回值 定义参数接收外部的
arr[i] = (function (num) {
return num;
})(i)
//或者
//直接让匿名方法里面在 写一个闭包 返回 那么参数是驻留在内存的 参数直接使用外部的
arr[i] = function (a) {
return function () {
return a;
}
}(i);
*/
}
i = 10;
return arr;
}
var b = box();
for (var i = 0; i < 5; i++) {
alert(b[i]) // 0 到 4
}