闭包函数

2020-10-09  本文已影响0人  lucky_yao

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>
上一篇下一篇

猜你喜欢

热点阅读