zoukankan      html  css  js  c++  java
  • 闭包

    (一)闭包概念

      1 闭包是一个函数,而且存在于另一个函数当中


      2 闭包可以访问到父级函数的变量,且该变量不会销毁

    function person(){
        var name = 'zcc';
        function getName(){
            console.log(name);
        }
        return getName;
    }
    var per = person();// per的值就是return后的结果,即cat函数
    per();// zcc per()就相当于getName()
    per();// zcc 同上,而且变量name没有销毁,一直存在内存中,供函数getName()调用
    per();// zcc

    (二)机制

           JS规定在一个函数作用域内,程序执行完以后变量就会被销毁,这样可节省内存;

          使用闭包时,按照作用域链的特点,闭包(函数)外面的变量不会被销毁,因为函数会一直被调用,所以一直存在,如果闭包使用过多会造成内存销毁。


    (三)闭包作用

      作用1:隐藏变量,避免全局污染
      作用2:可以读取函数内部的变量
      同时闭包使用不当,优点就变成了缺点:
      缺点1:导致变量不会被垃圾回收机制回收,造成内存消耗
      缺点2:不恰当的使用闭包可能会造成内存泄漏的问题


    (四)闭包应用

      需求 实现number自增

        1、通过全局变量,可以实现,但会污染其他程序

         

      2、定义一个局部变量,不污染全局,但是实现不了递增

      

      3、通过闭包,可以是函数内部局部变量递增,不会影响全部变量,完美!!  

      


         

          庸人自扰

  • 相关阅读:
    reStructuredText学习
    PYTHON编码处理-str与Unicode的区别
    如何参与一个GitHub开源项目?
    Boost库编译安装
    git push失败the remote end hung up unexpectedly
    VBox虚拟机安装debian
    debian设置英文模式
    python 使用json.dumps() 的indent 参数添加缩进空格数,格式化字符串后输出
    unittest之装饰器 @classmethod
    jmeter正则提取信息头数据
  • 原文地址:https://www.cnblogs.com/misscai/p/12993688.html
Copyright © 2011-2022 走看看