力扣刷题:计数器2

321 阅读2分钟

前言:锻炼自己的思想,规范自己的编程思路。

问题:

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

这三个函数是:

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

示例:(放代码里面)

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

思路:

函数名为 createCounter,它接受一个初始整数值 init,并返回一个包含三个函数的对象。

先声明了一个局部变量 currentValue 来存储当前值,并将其初始值设置为 init。然后,它返回一个包含三个函数的对象:increment、decrement 和 reset。

increment 函数将 currentValue 的值加 1 并返回。decrement 函数将currentValue 的值减 1 并返回。reset 函数将 currentValue 的值设置为 init 并返回。

这个函数的目的是创建一个计数器,可以递增、递减和重置当前值。

基于上述思考,代码如下:

function createCounter(init) {
    let currentValue = init;

    return {
        increment: function() {
            currentValue += 1;
            return currentValue;
        },
        decrement: function() {
            currentValue -= 1;
            return currentValue;
        },
        reset: function() {
            currentValue = init;
            return currentValue;
        }
    };
}

执行结果如下图:

image-20230626150433124.png

学到的知识点:

1.在 JavaScript 中,可以使用对象字面量语法来创建一个包含多个函数的对象。对象字面量是一种简洁的语法,用于定义具有多个属性和方法的对象。

2.在 JavaScript 中,可以在函数内部定义并使用其他函数。这些内部定义的函数称为嵌套函数或局部函数。

嵌套函数可以访问其外部函数中定义的变量和参数。这种能力使嵌套函数成为封装和组织代码的强大工具。

3.闭包是 JavaScript 中一种强大的特性,它允许函数访问并操作其外部作用域中的变量。当一个函数嵌套在另一个函数中时,嵌套函数可以访问其外部函数中定义的变量和参数。这种能力使嵌套函数成为封装和组织代码的强大工具。