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
        }

posted @ 2016-02-20 18:45  Enjoy Life  阅读(282)  评论(0编辑  收藏  举报