JS闭包的特点:在函数内部嵌套一个函数。使内部的函数能访问外层函数定义的变量。
例如:
//闭包
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
//调用
var c = a();
c();
闭包的好处:保护了a函数中的变量i。因为a函数返回的是b。所以在用var c=a()。构造a函数时,实际上指向的是b函数。所以,只有通过b函数才能访问到a里面的i变量;另一个好处,由于函数b要用到函数a里面的变量,所以GC并不会回收a的资源。每一次执行c的时候i都会++。