jquery之闭包

  • 闭包

常见形式是函数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。

 

posted @ 2019-06-13 12:14  saintdingtheGreat  阅读(196)  评论(0编辑  收藏  举报