[Easy] LeetCode JS 30 - 2620. Counter (計數器)
2024年2月26日
💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
LeetCode 30 Days of JavaScript
此題來自 Leetcode 的 30 天 JavaScript 挑戰
2620. Counter題目描述
想像一下,你正在開發一個追蹤不同指標的項目。我們需要一個計數器功能,但它比一般的計數器更複雜一點。請設計一個名為 createCounter
的函數,它可以選項性地接受一個起始值作為參數。這個函數應該返回一個新的函數。
當你第一次調用這個新函數時,它會根據你是否提供了起始值,而傳回起始值或預設的 0。巧妙的是,任何之後的調用都會比前一次的返回值增加 1。請注意,我們希望這種行為封装在這個函數中。
// 初始化沒傳入
const counter = createCounter();
counter(); // 0
counter(); // 1
counter(); // 2
// 初始化傳入 10
const counter = createCounter(10);
counter(); // 10
counter(); // 11
counter(); // 12
本題解答
以下是本題的解答,詳細解題思路可以在 E+ 成長計畫看到。如果想練習更多題目,推薦可以到 GreatFrontEnd 上練習
解法一
function createCounter(initialValue = 0) {
let count = initialValue - 1;
return () => {
count += 1;
return count;
};
}
解法二
function createCounter(initialValue = 0) {
let count = initialValue;
return () => {
return count++;
};
}
補充說明:本題目有用到閉包的概念,可以參考這篇文章。