# 2665. 计数器 II

# 题目

请你写一个函数 createCounter. 这个函数接收一个初始的整数值 init  并返回一个包含三个函数的对象。

这三个函数是:

increment() 将当前值加 1 并返回。 decrement() 将当前值减 1 并返回。 reset() 将当前值设置为 init 并返回。

示例 1:

输入:init = 5, calls = ["increment","reset","decrement"]
输出:[6,5,4]
解释:
const counter = createCounter(5);
counter.increment(); // 6
counter.reset(); // 5
counter.decrement(); // 4
成功
1
2
3
4
5
6
7

示例 2:

输入:init = 0, calls = ["increment","increment","decrement","reset","reset"]
输出:[1,2,1,0,0]
解释:
const counter = createCounter(0);
counter.increment(); // 1
counter.increment(); // 2
counter.decrement(); // 1
counter.reset(); // 0
counter.reset(); // 0
成功
1
2
3
4
5
6
7
8
9

提示:

  • -1000 <= init <= 1000
  • 总调用次数不会超过 1000

# 答案

/**
 * @param {integer} init
 * @return { increment: Function, decrement: Function, reset: Function }
 */
var createCounter = function(init) {
    let num = init;
    return {
        increment() {
            return ++num;
        },
        decrement() {
            return --num;
        },
        reset() {
            num = init;
            return num;
        }
    }
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */
成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 思路

闭包