1. 什么是闭包?
闭包是指函数和声明该函数的词法环境的组合。
换句话说,就是:
- 当一个函数在其外部作用域之外被调用时,依然可以访问那个外部作用域里的变量。
2. 例子说明
function outer() {
let count = 0;
function inner() {
count++;
console.log(count);
}
return inner;
}
const fn = outer(); // outer 执行,返回 inner 函数
fn(); // 输出 1
fn(); // 输出 2
inner函数访问并修改了outer函数中的变量count。- 即使
outer函数执行完了,count变量依然被inner通过闭包“保存”着。
3. 关键点
- 闭包使得函数可以记住并访问创建它时的作用域。
- 允许私有变量和封装,支持模块化编程。
- 但闭包也会导致变量不被垃圾回收,可能引起内存泄漏。
4. 总结一句话
闭包是函数和它定义时的环境的“打包”,使函数能访问定义它的作用域,即使函数在外部被调用。