1. 程式人生 > >javascript 閉包理解

javascript 閉包理解

  1. 閉包的含義:閉包就是能夠讀取其他函式內部變數的函式,一個函式內部的函式
  2. 閉包的用途: 讀取函式內部的變數;讓這些變數的值始終保持在記憶體中
  3. 閉包的弊端:由於閉包會使得函式中的變數都被儲存在記憶體中,記憶體消耗很大, 所以不能濫用閉包,否則會造成網頁的效能問題,在IE中可能導致記憶體洩露。解決方法是,在退出函式之前,將不使用的區域性變數全部刪除。
  4. 使用閉包的注意點:閉包會在父函式外部,改變父函式內部變數的值。所以,如果你把父函式當作物件(object)使用,把閉包當作它的公用方法(Public Method), 把內部變數當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函式內部變數的值。
  5. 使用閉包的例子

function t() {
var age = 23;
return function () {
console.log(age++);
}
}
var tmp = t();
var age = 1000;
tmp();
上述程式碼,閉包函式是function () {console.log(age++);},這個閉包函式引用var age = 23中的age。t()得到的結果是function() { console.log(age++);},該結果被賦予給一個全域性變數tmp ,這個全域性變數(即tmp)也引用t函式的區域性變數age(var age = 23;),當呼叫tmp函式結束後,函式內部的變數age( var age = 23;)的值始終保持在記憶體中。注意:防止記憶體洩露問題,我們需要在退出函式之前,將不使用的區域性變數全部刪除。