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