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