闭包

(一)闭包概念

  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、通过闭包,可以是函数内部局部变量递增,不会影响全部变量,完美!!  

  

 

 

 

 

 


     

 

 

      庸人自扰

 

posted @ 2020-05-31 23:15  朝才  阅读(272)  评论(0)    收藏  举报