闭包(Closure)
一、是什么
闭包 =
函数 + 其词法作用域的组合
二、简单理解
一个函数可以“记住外部变量”,就形成闭包
三、示例
function outer() {
let count = 0;
return function inner() {
count++;
console.log(count);
};
}
const fn = outer();
fn(); // 1
fn(); // 2
四、闭包本质
JS 引擎机制:
- outer 执行结束后不会被回收
- inner 仍然引用 outer 的变量
五、闭包作用
-
数据私有化
function createCounter() { let count = 0; return { inc: () => ++count, get: () => count, }; } -
维持状态
用于:
- 防抖节流
- React hooks
- 回调函数
六、缺点
👉 内存泄漏风险
原因:
- 变量长期被引用
七、总结
闭包本质: “函数 + 词法环境的持久引用”