Avatar ·

JavaScript中闭包(closures)是如何工作的?请用示例解释

大家好!我刚开始学习JavaScript,怎么也搞不懂闭包(closures)这个主题。读了很多文章,但还是困惑。 下面这个例子让我很困惑。我创建了一个返回另一个函数的函数: ```javascript function createCounter() { let count = 0; return function() { count++; return count; }; } const counter1 = createCounter(); const counter2 = createCounter(); console.log(counter1()); // 1 console.log(counter1()); // 2 console.log(counter2()); // 1 — 为什么不是3? ``` 为什么`counter1`和`counter2`表现得像独立的计数器?我以为变量`count`会是共享的。而且JavaScript在`createCounter`函数执行完毕后,是如何“记住”`count`的值的?通常局部变量在退出函数后就会被销毁。 请用简单的话解释闭包的工作机制。它们是如何存储对变量的引用的?在真实项目中这又有什么用?