zoukankan      html  css  js  c++  java
  • javascript闭包

    闭包是什么?

      闭包是指程序中有许多白能量和绑定变量的执行环境。

    在我看来就是:程序的代码段允许存在一级函数并且一级函数不能被释放,以及韩你数没有释放之前,外部可以使用一级函数的局部变量。

           简单的说闭包就是在外部可以使用局部变量。


    闭包的功能

      1、外部可以使用局部变量

      2、使函数不能释放

    为什么一级函数不能被释放?

        因为在一级函数中有一个函数,这个函数使用了一级函数的变量,我们返回了这个函数并创建一个变量接收了。

      那么这个函数就不会被js的垃圾回收机制销毁。

    闭包的应用:

      一般的项目中,闭包的使用比较少。当我们去封装一个第三方库时,会大量使用闭包。

    闭包的优缺点:

      优点:

         1、一个变量可以长期驻扎在内存中

         2、 避免全局变量的污染

         3、私有成员的存在

      缺点:常驻内存,会增大内存的使用量,使用不当很容易造成内存泄漏。

         外部会修改局部变量,会大量占用内存,内存不会被释放。

    闭包的一种写法:

     1       <script>
     2             //函数在调用时,会开辟一块内存空间,这块内存空间在函数执行完毕时释放;
     3             function fn(){
     4                 var a = 1;
     5                 return function (){
     6                     alert(a++);
     7                 }
     8             }
     9             
    10             //a 是fn返回的二级函数
    11             var a =  fn();
    12             a(); //返回 1 //此时,我们在外界就是用到了fn的局部变量
    13             a(); //返回2
    14             
    15             var b = fn();
    16             b();//返回1
    17             b();//返回2
    18         </script>

    闭包的方法还有些欠缺,希望大家能帮我补充一下,谢谢!!!!!

  • 相关阅读:
    C#——Unity事件监听器
    关于RAS加解密的工具类
    关于Map的源码分析之HashMap
    关于Map的源码分析
    关于Set的源码分析
    关于集合List的源码分析
    关于String源码分析
    hdu 1285 确定比赛名次
    hdu 2553 N皇后问题
    hdu 1312 Red and Black
  • 原文地址:https://www.cnblogs.com/user-5253/p/7078082.html
Copyright © 2011-2022 走看看