function makeCounter() {
var i = 0;
return function() {
console.log( ++i );
};
}
var counter = makeCounter();
counter(); // logs: 1
counter(); // logs: 2
为什么第二次调用counter()的结果是'2'而不是'1'?
我试图找出它的执行过程,所以我重写了 makeCounter():
function makeCounter() {
var i = 0;
console.log('outer');
return function() {
console.log('inner');
console.log( ++i );
};
}
var counter = makeCounter();
counter();
counter();
结果是:
outer
inner
1
inner
2
我能想到: i 是函数 counter()的参数,第一个计数器()执行, i 更改为'1 ”。所以第二个计数器()执行,我是'2'。