Words etch cherished moments.
OG

计数器

1,344 words, 3 min read
2018/09/21 AM
218 views

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

这三个函数是:

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

示例 1:

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

示例 2:

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
输入: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

提示:

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

该题考验对闭包的理解以及 前置i++后置i++的区别

          
  • 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
  • 27
  • 28
  • 29
  • 30
  • 31
type ReturnObj = { increment: () => number, decrement: () => number, reset: () => number, } function createCounter(init:number): ReturnObj { let num = init const increment = () => { return ++num } const decrement = () => { return --num } const reset = () => { return num = init } return { increment, decrement, reset } }; /** * const counter = createCounter(5) * counter.increment(); // 6 * counter.reset(); // 5 * counter.decrement(); // 4 */
Creative Commons BY-NC 4.0
https://zhangwurui.cn/article/25
0/0comments
Guest
Start the discussion...
Be the first to comment