为什么两次调用函数的结果不同?

时间:2015-08-26 03:33:57

标签: javascript scope

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'。

0 个答案:

没有答案