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
        }
                    
                
                
            
        
浙公网安备 33010602011771号