JavaScript 中,闭包(Closure)是如何工作的?
2025年9月10日 by admin
在 JavaScript 中,闭包(Closure)是指函数可以访问其外部作用域的变量,即使外部函数已经返回。闭包是 JavaScript 中非常重要的概念,理解它有助于更好地掌握 JavaScript 的执行上下文和作用域链。
当一个函数在另一个函数内部定义时,内嵌函数会“记住”外部函数的作用域。即使外部函数已经执行完毕并返回,内嵌函数依然能够访问外部函数的变量和参数。这就是闭包。
function outerFunction() {
let outerVariable = 'I am outside!';
function innerFunction() {
console.log(outerVariable);
}
return innerFunction;
}
const closureExample = outerFunction();
closureExample(); // 输出:I am outside!
outerFunction 内部定义了一个局部变量 outerVariable,并返回了 innerFunction。innerFunction 作为外部函数的返回值被调用,甚至在 outerFunction 执行结束后,它依然能够访问 outerVariable。innerFunction 能够访问并保持对外部函数作用域的引用。 function counter() {
let count = 0;
return {
increment: function() {
count++;
console.log(count);
},
decrement: function() {
count--;
console.log(count);
},
getCount: function() {
console.log(count);
}
};
}
const myCounter = counter();
myCounter.increment(); // 1
myCounter.increment(); // 2
myCounter.getCount(); // 2
myCounter.decrement(); // 1
闭包是 JavaScript 中的一个核心特性,它使得函数可以记住并访问其外部作用域的变量。它可以用于数据封装、回调函数、事件处理等场景,但需要注意内存管理,避免不必要的内存占用。