function test() {
var n = 4399;
function add(){
n++;
console.log(n);
}
return {n:n,add:add}
}
var result = test();
var result2 = test();
result.add();
result.add();
console.log(result.n);
result2.add();
输出:4400 4401 4399 4400
test内部有一个局部变量n,1个闭包,闭包的作用域是定义它的父级,定义的时候作用域就已经确定了,result和result2都是不同的作用域,返回一个新的对象。result.add();访问的是闭包的父级的n的作用域result.n;访问的是返回的新对象的创建的n