美文网首页
闭包函数

闭包函数

作者: lucky_yao | 来源:发表于2020-10-09 08:25 被阅读0次

    1:

    闭包就是能够读取其他函数内部变量的函数。
    
    这种写法就可以获取到函数内部的局部变量,b函数就是闭包
    
    function a(){
    
    var n=9;
    
    function b(){
    
    alert(n)
    
    }
    
    return b;
    
    }
    
    var num=a();
    
    num();
    

    2:闭包的用途

    闭包可以用在许多地方。
    
    它的最大用处有两个,一个是前面提到的可以读取函数内部的 变量,
    
    另一个就是让这些变量的值始终保持在内存中。
    

    3:闭包的缺点:

    使用闭包的注意点 由于闭包会使得函数中的变量都被保存在内存中,
    
    内存消耗很大,所以不能滥用闭包,
    
    否则会造成网页的性能问题,
    
    在 IE 中可能导致内存泄露。
    
    解决方法是,在退出函数之前,
    
    将不使用的局部变量全部删除。
    
    闭包会在父函数外部,改变父函数内部变量的值。
    
    所以,如 果你把父函数当作对象(object)使用,
    
    把闭包当作它的公用方法(Public Method),
    
    把 内部变量当作它的私有属性(private value),
    
    这时一定要小心,不要随便改变父函数内 部变量的值。
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
        </body>
        <script type="text/javascript">
            //      1:闭包函数
            //      2:闭包函数的作用
            //      2.1想获取函数中的局部变量,那么久要用到闭包函数
            //      2.2另一个就是让这些变量的值始终保持在内存中
            //获取局部变量的案例
            //      function a(){
            //          var n=9;
            //          function b(){
            //              return n;
            //          }
            //          return b();
            //      }
            //      var c=a();
            //      alert(c)
            //变量始终保存中内存中
            // function fun(){
            //  var n=9;
            //  a=function(){
            //      n+=1;
            //  }
            //  function f2(){
            //      alert(n);
            //  }
            //  return f2;
            // }
            // var sum=fun();
            // sum();//9
            // a();
            // sum();//10
            // a();
            // sum();//11
            // a();
            // sum();//12
    
    
    
            //      function fun(){
            //          var n=9;
            //          a=function(){
            //              n+=1;//n=n+1;
            //          }
            //          function f2(){
            //              alert(n);//9 10
            //          }
            //          return f2;
            //      }
            //      var sum=fun();
            //      sum();
            //      sum();
            //      sum();
            //      sum();
    
            ////1:第一种形式
            //      function fun(){
            //          var n=9;
            //          function sum(){
            //              alert(n)
            //          }
            //          return sum;
            //      }
            //      var c=fun();
            //      c();
    
    
            //2:第2种形式
            //      function fun(){
            //          var n=119;
            //          function sum(){
            //              function dd(){
            //                  alert(n)
            //              }
            //              return dd;
            //          }
            //          return sum;
            //      }
            //      fun()()();
            
            function a(){
                var b=2;
                function c(){
                    alert(b);
                }
                return c;
            }
            a()
            
            </script>
    </html>
    

    相关文章

      网友评论

          本文标题:闭包函数

          本文链接:https://www.haomeiwen.com/subject/dqjryktx.html