function a(){
var num=1;
return function(){
return num++;
}
}
var b= a();
console.log(b());
console.log(b());
console.log(b());
console.log(b());
console.log(b());
这段代码输出的结果是:1,2,3,4,5
为什么是累加了呢?
这里牵扯到了闭包。
函数a
执行后的返回结果是一个函数,所以变量b
实际上指向的是这个函数中的
num
访问的是函数a
中的num
,变量b
是一个全局变量,不会被垃圾回收掉,因为需要访问num
,所以函数a
的活动对象(AO)也就不会被释放掉,始终存在,这就是num
可以一直累加的原因,每一次调用变量b
,都会将函数a
中的num
加1