回到课程

counters 是独立的吗?

重要程度: 5

这里我们用相同的 makeCounter 函数创建了两个计数器(counters):countercounter

它们是独立的吗?第二个 counter 要显示什么?0,12,3 还是其他?

function makeCounter() {
  let count = 0;

  return function() {
    return count++;
  };
}

let counter = makeCounter();
let counter2 = makeCounter();

alert( counter() ); // 0
alert( counter() ); // 1

alert( counter2() ); // ?
alert( counter2() ); // ?

答案是:0,1。

函数 countercounter2 是通过 makeCounter 的不同调用创建的。

所以它们都有独立的外部词法环境,每一个都有自己的 count