看到一个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
}
原文:http://www.cnblogs.com/WindWall/p/5203749.html