计数器是否独立?
重要性:5
这里我们使用相同的 makeCounter
函数创建了两个计数器:counter
和 counter2
。
它们是独立的吗?第二个计数器将显示什么?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。
函数 counter
和 counter2
是由 makeCounter
的不同调用创建的。
因此它们具有独立的外部词法环境,每个环境都有自己的 count
。