LeetCode:2665. 计数器 II,闭包详解
原题链接:https://leetcode.cn/problems/counter-ii/
在解决本题之前,我们首先需要了解 JavaScript 中的一个重要概念——闭包(Closure)。闭包在 JavaScript 中是一种非常强大的特性,它可以让函数访问并操纵函数之外的变量,即使那个外部函数已经执行结束。
在 JavaScript 中,当一个函数被创建时,它会记住自己被创建时的环境,并且可以访问这个环境中的所有变量。这就意味着,即使一个函数已经执行完毕并且其执行环境已经消失,该函数仍然可以通过闭包来访问和操作它被创建时的环境中的变量。
下面是一个简单的闭包示例:
在这个例子中,outer
函数中定义了一个变量 outerVar
和一个函数 inner
。虽然 outer
函数在被调用后就已经执行结束,但由于闭包的存在,我们通过 innerFunc
仍然可以访问 outerVar
这个变量。
现在我们用这个闭包的概念来解决本题:
在这个解法中,我们创建了一个闭包,使得 increment
、decrement
和 reset
这三个函数都能够访问和操作 count
变量。虽然 createCounter
函数在被调用后就已经执行结束,但由于闭包的存在,我们创建的这三个函数仍然可以访问和操作 count
变量。这就是 JavaScript 闭包的强大之处。通过闭包,我们可以创建出具有“记忆”功能的函数,这些函数可以记住并操作它们被创建时所在的环境中的变量。
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/f3fd221aae3a7bed7a7fd9296】。文章转载请联系作者。
评论