这是在闭包内创建本地对象的代码。
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 应该被释放。为什么不释放?还是因为没有垃圾收集而暂时存在?