我有以下两个计数器函数,当它们运行时会返回不同的结果。
在第一个代码片段中,counter函数被分配给变量letsCount,并且执行该函数似乎会更新counter函数中的变量count。
然而,在第二个代码片段中,直接执行该函数并不会更新count变量。
请问为什么它们有不同的结果?当返回函数的函数被分配给一个变量时会发生什么?
在第一个代码片段中,counter函数被分配给变量letsCount,并且执行该函数似乎会更新counter函数中的变量count。
然而,在第二个代码片段中,直接执行该函数并不会更新count变量。
请问为什么它们有不同的结果?当返回函数的函数被分配给一个变量时会发生什么?
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
counter
函数时,都会创建一个新函数并将count
设置为0
。 - Felix Kling