zoukankan      html  css  js  c++  java
  • 闭包的理解

    概念:当一个函数的返回值是另一个函数,而返回值的那个函数如果调用了其父函数内部的变量,且返回的这个函数在外部被执行就产生了闭包。

    闭包是一个环境,具体指的就是外部函数--高阶函数。

    说的通俗一点就是一个环境,能够读取其他函数内部的变量。

    本质上,闭包是将函数内部和函数外部连接起来的桥梁。

    用处:1·读取内部函数的变量;

        2·这些变量的值始终会保持在内存中,不会在外层函数调用后被自动清除

    优点:1·变量会一直在内存中;

          2·避免全局变量的污染;

          3·私有变量的存在;

    特性:1·函数嵌套函数;

          2·内部函数可以直接使用外部函数的局部变量;

          3·变量或参数不会被垃圾回收机制回收 GC;

    补充一下垃圾回收机制:

      在Js中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么函数a执行后不会被回收的原因。

    缺点:变量长期储存在内存中,会增大内存的使用量 使用不当会造成内存泄露

    判断闭包的3个特点:

      1·函数嵌套函数;

      2·内部函数一定操作了外部函数的局部变量;

      3·外部函数一定将内部函数返回到外部并保存在一个全局变量中;

    判断闭包的执行结果:

      1·外部函数被调用了几次就有几个受保护的局部变量的副本;

      2·来自一个闭包的函数被调用几次,受保护的局部变量就变化几次;

  • 相关阅读:
    一个判断浏览器类型的JS
    asp中输出xml “文本内容中发现无效字符”问题的解决(转)
    Excel VBA工程密码之最简单破解法
    爆破AspriseOCR 4.0
    vi编辑器的使用(转载)
    数据挖掘(转载)
    简单工厂模式(SimpleFactory)
    工厂方法模式(Factory Method)
    让gridview默认处于编辑模式并取得编辑后的值
    GDB调试精粹及使用实例(转载)
  • 原文地址:https://www.cnblogs.com/8023-CHD/p/10908160.html
Copyright © 2011-2022 走看看