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都會++。