返回课程

计数器是否独立?

重要性:5

这里我们使用相同的 makeCounter 函数创建了两个计数器:countercounter2

它们是独立的吗?第二个计数器将显示什么?0,1 还是 2,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