我有以下兩個計數器函數,它們在運行時返回不同的結果。JavaScript執行函數返回函數
在第一個片段中,計數器函數分配給變量letsCount,它看起來像執行函數更新計數器函數中的變量計數。
但是在第二個片段中,直接執行函數並不會更新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
無論何時調用'counter',都會創建一個新函數並將'count'設置爲'0'。 –