[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++;
  };
}

補充說明:本題目有用到閉包的概念,可以參考這篇文章

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們