javascript閉包

官方對閉包的解釋是:一個擁有許多變數和綁定了這些變數的環境的表達式(通常是一個函式),因而這些變數也是該表達式的一部分。

閉包的特點:
1.作為一個函式變數的一個引用,當函式返回時,其處於激活狀態。
2.一個閉包就是當一個函式返回時,一個沒有釋放資源的棧區。
簡單的說,javascript允許使用內部函式---即函式定義和函式表達式位於另一個函式的函式體內。而且,這些內部函式可以訪問它們所在的外部函式中聲明的所有局部變數、參數和聲明的其他內部函式。當其中一個這樣的內部函式在包含它們的外部函式之外被調用時,就會形成閉包。
function closure(){
var str = "I'm a part variable.";
return function(){
alert(str);
}
}
var fObj = closure();
fObj();
在上面代碼中,str是定義在函式closure中局部變數,若str在closure函式調用完成以後不能再被訪問,則在函式執行完成後str將被釋放。但是由於函式closure返回了一個內部函式,且這個返回的函式引用了str變數,導致了str可能會在closure函式執行完成以後還會被引用,所以str所占用的資源不會被回收。這樣closure就形成了一個閉包。

相關詞條

熱門詞條

聯絡我們