看到一个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 }
转载于:https://www.cnblogs.com/WindWall/p/5203749.html
相关资源:JAVA上百实例源码以及开源项目