閉包是什麼? 閉包是指程式中有許多白能量和綁定變數的執行環境。 在我看來就是:程式的代碼段允許存在一級函數並且一級函數不能被釋放,以及韓你數沒有釋放之前,外部可以使用一級函數的局部變數。 簡單的說閉包就是在外部可以使用局部變數。 閉包的功能: 1、外部可以使用局部變數 2、使函數不能釋放 為什麼一級 ...
閉包是什麼?
閉包是指程式中有許多白能量和綁定變數的執行環境。
在我看來就是:程式的代碼段允許存在一級函數並且一級函數不能被釋放,以及韓你數沒有釋放之前,外部可以使用一級函數的局部變數。
簡單的說閉包就是在外部可以使用局部變數。
閉包的功能:
1、外部可以使用局部變數
2、使函數不能釋放
為什麼一級函數不能被釋放?
因為在一級函數中有一個函數,這個函數使用了一級函數的變數,我們返回了這個函數並創建一個變數接收了。
那麼這個函數就不會被js的垃圾回收機制銷毀。
閉包的應用:
一般的項目中,閉包的使用比較少。當我們去封裝一個第三方庫時,會大量使用閉包。
閉包的優缺點:
優點:
1、一個變數可以長期駐扎在記憶體中
2、 避免全局變數的污染
3、私有成員的存在
缺點:常駐記憶體,會增大記憶體的使用量,使用不當很容易造成記憶體泄漏。
外部會修改局部變數,會大量占用記憶體,記憶體不會被釋放。
閉包的一種寫法:
1 <script> 2 //函數在調用時,會開闢一塊記憶體空間,這塊記憶體空間在函數執行完畢時釋放; 3 function fn(){ 4 var a = 1; 5 return function (){ 6 alert(a++); 7 } 8 } 9 10 //a 是fn返回的二級函數 11 var a = fn(); 12 a(); //返回 1 //此時,我們在外界就是用到了fn的局部變數 13 a(); //返回2 14 15 var b = fn(); 16 b();//返回1 17 b();//返回2 18 </script>
閉包的方法還有些欠缺,希望大家能幫我補充一下,謝謝!!!!!