如何理解閉包?


1、定義: 嵌套在函數作用域中的函數,稱為閉包函數。該作用域稱為閉包環境。通過閉包函數可以訪問閉包函數所在函數作用域中的形參與變量

2、表現形式: 使函數外部能夠調用函數內部定義的變量

3、工作原理:
 利用了js中的垃圾回收機制,當一個函數被調用時,開辟空間,函數調用結束,釋放空間,垃圾回收機制釋放被調用結束的函數時,發現函數的變量正在被其他的函數調用,這些變量不會被釋放,而且被永久駐留在內存,只有退出程序,才會被釋放,或者是手工釋放(=null) 

4、變量的作用域
要理解閉包,首先必須理解Javascript特殊的變量作用域。
變量的作用域分類:全局變量和局部變量。
特點:
1、函數內部可以讀取函數外部的全局變量;在函數外部無法讀取函數內的局部變量。
2、函數內部聲明變量的時候,一定要使用var命令。如果不用的話,你實際上聲明了一個全局變量!
 5、使用閉包的注意點
1)濫用閉包,會造成內存泄漏:由於閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致內存泄露。解決方法是,在退出函數之前,將不使用的局部變量全部刪除。
2)會改變父函數內部變量的值。所以,如果你把父函數當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內部變量當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數內部變量的值。


免責聲明!

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



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