function counter(){
var count = 0;
function innerCounter(){
return ++count;
}
return innerCounter;
}
var countFunc = counter();
console.log( counter()());//1
console.log( counter()());//1
console.log( counter()());//1
console.log( countFunc() ); //1
console.log( countFunc() ); //2
console.log( countFunc() ); //3
請問這種寫法counter()()為什麼無法順利得到1/2/3?
經過的途徑感覺是相同的,想了一晚也得不出答案...麻煩各路大神幫幫忙
counter() // 得到一個全新的計時器
counter()() // 得到一個全新的計時器並執行一次
countFunc = counter(); // 得到一個全新的計時器存在 countFunc 變數內
countFunc() // countFunc 變數內存的計時器執行一次
一個是沒存起來,每次都是建新的並執行
一個是有存起來,每次都是用同一個計時器執行
第一種跑法counter()(),是單獨重新運行。
每一次RUN都會重新RUN, 並受到var count = 0;重新給值。
但你二種跑法countFunc()。則是繼承運行了。
畢竟已經將運行及繼承性存在變數內了。
也就是說在其函式中的 count 值會被記錄住。
如果說用PHP來說明的話。它已經是CLASS的觀念做法了。