題目詳情:
請你編寫(xie)并返(fan)(fan)回一個 計數器(qi) 函(han)數,它接(jie)收一個整型參數 n 。這個 計數器(qi) 函(han)數最初返(fan)(fan)回 n,每次調用它時返(fan)(fan)回前一個值加 1 的值 ( n , n + 1 , n + 2 ,等等)。
示例:
輸入:
n = -2
["call","call","call","call","call"]
輸出:[-2,-1,0,1,2]
解釋:counter() 最初返回 -2。然后在每個后續調(diao)用(yong)后增加 1。
解題思路:
首(shou)先(xian)定義一個名為 createCounter 的函數,它(ta)接(jie)收一個整(zheng)型參數 n。在函數內部(bu),我們返回一個匿(ni)名函數,該(gai)匿(ni)名函數使用閉(bi)包保存了(le)外部(bu)函數的參數 n。
每(mei)次調用計數器函數時,閉(bi)包中的變量 n 會自增(zeng) 1,然后(hou)返回更新(xin)后(hou)的值(zhi)。
代碼實現:
function createCounter(n) {
return function () {
return n++;
}
}
// 示例輸入
const n = -2;
const calls = ["call", "call", "call", "call", "call"];
// 創建計數器函數
const counter = createCounter(n);
// 調用計數器函數多次,并將結果存儲在數組中
const output = calls.map(() => counter());
// 輸出結果
console.log(output);