这是在闭包内部创建本地对象的代码。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