關於閉包的做用,以及優缺點

 定義:閉包 當一個函數的返回值是另一個函數,而返回的那個函數若是調用了其父函數內部的變量,且返回的這個函數在外部被執行         就產生了閉包.閉包是一個環境,具體指的就是外部函數--高階函數。閉包

        說白了就是一個環境,可以讀取其餘函數內部的變量。函數

 本質上,閉包是將函數內部和函數外部鏈接起來的橋樑。性能

用處:1.讀取函數內部的變量;對象

           2.這些變量的值始終保持在內存中,不會在外層函數調用後被自動清除。內存

優勢:1:變量長期駐紮在內存中;變量

           2:避免全局變量的污染;object

           3:私有成員的存在 ;垃圾回收

特性:1:函數套函數;方法

           2:內部函數能夠直接使用外部函數的局部變量或參數;內存泄露

           3:變量或參數不會被垃圾回收機制回收 GC;

缺點:

    常駐內存 會增大內存的使用量 使用不當會形成內存泄露,詳解:

(1)因爲閉包會使得函數中的變量都被保存在內存中,內存消耗很大,因此不能濫用閉包,不然會形成網頁的性能問題,在IE中可能致使內存泄露。解決方法是,在退出函數以前,將不使用的局部變量所有刪除。

(2)閉包會在父函數外部,改變父函數內部變量的值。因此,若是你把父函數看成對象(object)使用,把閉包看成它的公用方法(Public Method),把內部變量看成它的私有屬性(private value),這時必定要當心,不要隨便改變父函數內部變量的值。

相關文章
相關標籤/搜索