You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionouter(){varouterVar='I am from outer function';functioninner(){console.log(outerVar);}returninner;}varinnerFunc=outer();innerFunc();// 输出:I am from outer function
原题链接:
https://leetcode.cn/problems/counter-ii/
在解决本题之前,我们首先需要了解 JavaScript 中的一个重要概念——闭包(Closure)。闭包在 JavaScript 中是一种非常强大的特性,它可以让函数访问并操纵函数之外的变量,即使那个外部函数已经执行结束。
在 JavaScript 中,当一个函数被创建时,它会记住自己被创建时的环境,并且可以访问这个环境中的所有变量。这就意味着,即使一个函数已经执行完毕并且其执行环境已经消失,该函数仍然可以通过闭包来访问和操作它被创建时的环境中的变量。
下面是一个简单的闭包示例:
在这个例子中,
outer
函数中定义了一个变量outerVar
和一个函数inner
。虽然outer
函数在被调用后就已经执行结束,但由于闭包的存在,我们通过innerFunc
仍然可以访问outerVar
这个变量。现在我们用这个闭包的概念来解决本题:
在这个解法中,我们创建了一个闭包,使得
increment
、decrement
和reset
这三个函数都能够访问和操作count
变量。虽然createCounter
函数在被调用后就已经执行结束,但由于闭包的存在,我们创建的这三个函数仍然可以访问和操作count
变量。这就是 JavaScript 闭包的强大之处。通过闭包,我们可以创建出具有“记忆”功能的函数,这些函数可以记住并操作它们被创建时所在的环境中的变量。The text was updated successfully, but these errors were encountered: