• 闭包

常见形式是函数A里面定义一个函数B,并返回函数体的引用,很抽象是不是,具体代码如下:

function wenwa()
{
    var i =0;
    function cj()
    {
        console.log("劲儿弟弟吃了"+(++i)+"个馅饼");
    }
    return cj;
}
duwa = wenwa();
duwa();
duwa();
duwa();
duwa();

输出结果:

劲儿弟弟吃了1个馅饼
劲儿弟弟吃了2个馅饼
劲儿弟弟吃了3个馅饼
劲儿弟弟吃了4个馅饼

总结:以上述闭包函数为例,每次执行时,内存中会生成一片区域存放下列代码

var i =0;
    function cj()
    {
        console.log("劲儿弟弟吃了"+(++i)+"个馅饼");
    }
    return cj;

之后,把函数wenwa的返回值赋给duwa,回收器无法判定duwa是否还有用,那么duwa对应的是代码区里的变量i和函数体cj()所以变量i没有被释放,因故

我们看到的结果是每次调用,i在原有基础上不断的加1。

 

相关文章:

  • 2022-12-23
  • 2021-11-01
  • 2022-01-13
  • 2021-12-08
  • 2022-02-09
  • 2021-09-27
  • 2021-06-15
  • 2021-10-26
猜你喜欢
  • 2022-12-23
  • 2021-12-24
  • 2022-12-23
  • 2022-02-28
  • 2022-12-23
  • 2021-05-23
相关资源
相似解决方案