闭包:
一个函数返回另一个函数的引用。
例:
function a(){
var i = 0;
var b = function(){alert(i++);}
return b;
}
c = a();
由于闭包中引用了函数中的资源因此资源不会被销毁。a返回函数b的引用给c,又函数b的作用域链包含了对函数a的活动对象的引用,也就是说b可以访问到a中定义的所有变量和函数。函数b被c引用,函数b又依赖函数a,因此函数a在返回后不会被GC回收。
闭包:
一个函数返回另一个函数的引用。
例:
function a(){
var i = 0;
var b = function(){alert(i++);}
return b;
}
c = a();
由于闭包中引用了函数中的资源因此资源不会被销毁。a返回函数b的引用给c,又函数b的作用域链包含了对函数a的活动对象的引用,也就是说b可以访问到a中定义的所有变量和函数。函数b被c引用,函数b又依赖函数a,因此函数a在返回后不会被GC回收。