什么是閉包?
一個簡單的閉包如下:
function a(){
var i=10;
return function b(){
console.log(i)
}
}
var c=a();//運行此處返回的是b函數
c();//執行b函數
從此處可以看出,其實閉包一句話總結就是:函數嵌套函數,然后外部函數能夠獲取到函數內部的私有數據;
那么閉包的好處是什么呢?
好處:
其實,在函數外部我們想獲取函數內部的變量,數據這些,是無法獲取到的,而閉包正好滿足了這一點。所以,閉包最大的好處就是,能夠在函數外部獲取到函數內部的私有數據,這些變量和數據會一直存在函數中,不會在調用函數之后被垃圾回收機制回收。
壞處:
而由於函數的私有數據會一直存在內存中,這也將導致內存過多,內存消耗大。造成內存泄漏
所以,我們不應該濫用閉包,而為了解決這一缺點,我們可以在退出函數之前,將局部變量刪除掉
這是我個人的一些學習筆記,可能有不對的地方,大神勿噴哈!