這是在閉包內部創建本地對象的代碼。Javascript關閉對象生命
function A() {
this.welcome = "Welcome";
}
var P = (function() {
var a = new A();
function printa() {
console.log(a);
}
return {
printa: printa
};
})();
P.printa();
它打印:
{ welcome: 'Welcome' }
在P =之後...執行功能,P得到保存到一個功能printa()引用一個新的對象,但在這個時候,當地變量a應該被釋放。爲什麼它沒有被釋放? 還是暫時存在,因爲它不是垃圾收集?
我的觀點是,雖然''打印''提到''a'',它不會在它返回時執行。因此,「printa」不應該保留對「a」的引用,因爲它是一個函數,而不是字典。否則它需要保持所有的外部變量甚至不被執行。 – lcltj 2012-08-01 18:44:29