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>

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

  • 相关阅读:
    SGU 271 Book Pile (双端队列)
    POJ 3110 Jenny's First Exam (贪心)
    HDU 4310 Hero (贪心)
    ZOJ 2132 The Most Frequent Number (贪心)
    POJ 3388 Japanese Puzzle (二分)
    UVaLive 4628 Jack's socks (贪心)
    POJ 2433 Landscaping (贪心)
    CodeForces 946D Timetable (DP)
    Android Studio教程从入门到精通
    Android Tips – 填坑手册
  • 原文地址:https://www.cnblogs.com/user-5253/p/7078082.html
Copyright © 2011-2022 走看看