閉包的特點:
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就形成了一個閉包。
