闭包笔记

形成闭包

      //函数嵌套函数
        function test(){
            var arr = [];
            for(var i = 0; i < 10; i++){
                arr[i] = function(){
                    document.write(i + " ");//调用再执行 渲染10个10
                }
            }
            return arr;
        }
        var myArr = test();
        for(var j = 0; j < 10; j++ ){
            myArr[j]();
        }

闭包作用

        function test(){
            var arr = [];
            for(var i = 0; i < 10; i++){
               (function(j){
                arr[j] = function(){ //立即执行函数
                    document.write(j + " ");//渲染0,1,2,3,4,5,6,7,8,9
                }
               }(i))
            }
            return arr;
        }

        var myArr = test();
        for(var j = 0; j < 10; j++ ){
            myArr[j]();
        }

内存泄漏

       //当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄露
      function a() {
            function b() {//b函数可以拿到a函数的所有成果
                var bbb = 234;
                document.write(aaa);
            }
            var aaa = 123;
            return b;//需要(返回)保存到外边
        }

        var glob = 100;
        var demo = a();
        demo();

        function test(){
            var temp = 100;
            function a(){
                console.log(temp);
            }
            return a;
        }
        var demo = test();
        demo();
posted @ 2020-11-11 10:33  残酷^现实  阅读(59)  评论(0编辑  收藏  举报