閉包就是在一個函數內定義一個內部函數 并返回內部函數
function f1(){var a=1;
add=function(){a=a+1;}
function f1Sub(){
console.log(a);
}
return f1Sub;
}
var f=f1();
f();
add();
f();
var f2=f1();
add();
f();
輸出為 1 2 2
可以看到輸出結果 定義f2后執行add 這時 f2的add函數已經替代了f1 因為相對f f2而言 ?add函數是他們的兄弟函數 而當前f f2都是全局變量
add函數在當前上下文成了也變為全局變量 依據js變量定義規則 ?后定義的覆蓋前定義的
?
沒必要時還是以對象形式調用內部函數吧 ?閉包太不穩定了
使用 f=null f2=null 可以清除引用 js會自動清理未引用的對象