我有以下两个计数器函数,它们在运行时返回不同的结果。
在第一个片段中,计数器函数被分配给变量letsCount,看起来执行该函数会更新计数器函数中的var count。
然而,在第二个片段中,直接执行该函数不会更新 count 变量。
您能否解释为什么它们有不同的结果以及将返回函数的函数分配给变量时会发生什么?
片段 1
function counter() {
var count = 0;
return function() {
console.log(count++);
}
}
var letsCount = counter();
letsCount(); // 0
letsCount(); // 1
letsCount(); // 2
片段 2
function counter() {
var count = 0;
return function() {
console.log(count++);
}
}
counter()(); // 0
counter()(); // 0
counter()(); // 0