1.
function f1() {
var a={};
return a;
}
var b=f1();
b.say=1;
console.log(b)
函数f1执行后返回的是引用,变量b和f1的内部变量a指向同一个对象,变量a和f1函数对象实例将被销毁
2.如下才是闭包,如果函数执行返回后,依旧对其作用域内的变量保持引用关系,就会形成闭包,闭包的形成通过函数的作用域对象实现,每一函数在定义的时候会构成自己的变量作用域对象,如果对外层函数的变量有使用关系,就会引用外层函数的变量作用域,构成变量作用域链
function f1() {
var _count_=0;
var a={
plus:function(){
_count_++;
},
value:function(){
return _count_;
}
};
return a;
}
var b=f1();
b.plus();
console.log(b.value())
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…