zoukankan      html  css  js  c++  java
  • 闭包笔记

    形成闭包

          //函数嵌套函数
            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();
    
  • 相关阅读:
    ZOJ 3795 Grouping
    ZOJ 3791 An Easy Game
    ZOJ 3790 Consecutive Blocks
    POJ 1451 T9
    POJ 1141 Brackets Sequence
    POJ 2411 Mondriaan's Dream
    POJ 2513 Colored Sticks
    Eclipse 快捷键大全
    C# lock关键字(多线程)
    C# 内部类
  • 原文地址:https://www.cnblogs.com/lsy6/p/13957434.html
Copyright © 2011-2022 走看看