- 閉包:就是能夠讀取外層函數(shù)內(nèi)部變量的函數(shù)。
- 閉包需要滿足三個(gè)條件:
- 訪問(wèn)所在作用域;
- 函數(shù)嵌套;
- 在所在作用域外被調(diào)用 。
- 優(yōu)點(diǎn): 可以重復(fù)使用變量,并且不會(huì)造成變量污染 。
- 缺點(diǎn): 會(huì)引起內(nèi)存泄漏
- 使用閉包的注意點(diǎn):
- 由于閉包會(huì)使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會(huì)造成網(wǎng)頁(yè)的性能問(wèn)題,在IE中可能導(dǎo)致內(nèi)存泄露。解決方法是,在退出函數(shù)之前,將不使用的局部變量全部刪除。
- 閉包會(huì)在父函數(shù)外部,改變父函數(shù)內(nèi)部變量的值。所以,如果你把父函數(shù)當(dāng)作對(duì)象 (object)使用,把閉包當(dāng)作它的公用方法(Public Method),把內(nèi)部變量當(dāng)作它的私有屬性(private value),這時(shí)一定要小心,不要隨便改變父函數(shù)內(nèi)部變量的值。