有的说js闭包就是外层函数的变量在内存中保留下来。那么如下:
例一:
function outer(){
var n = 1;
return function(){
n++;
console.log(n);
};
}
outer()();//2
outer()();//2
例二:
function outer(){
var n = 1;
return function(){
n++;
console.log(n);
};
}
var aa = outer();
aa();//2
aa();//3
那么例一到底属不属于闭包,例一和例二差别在哪?
为什么例一中n在内存中没有被保存下来,而例二保存下来了。
跪求大神把两者的作用域链,执行环境,活动对象等给我理理,能用图最好!
你可以把第一个例子看作
var aa=outer()
aa()
var bb = outer()
bb()