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


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

        說白了就是一個環境,能夠讀取其他函數內部的變量。

 本質上,閉包是將函數內部和函數外部連接起來的橋梁。

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

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

優點:1:變量長期駐扎在內存中;

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

           3:私有成員的存在 ;

特性:1:函數套函數;

           2:內部函數可以直接使用外部函數的局部變量或參數;

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

缺點:

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

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

(2)閉包會在父函數外部,改變父函數內部變量的值。所以,如果你把父函數當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內部變量當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數內部變量的值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM