什么是闭包?
闭包(Closure)是JavaScript中一个核心概念,指函数可以访问并记住其词法作用域,即使该函数在其作用域外执行。
- 📌 闭包的三个要素:
- 函数
- 引用该函数的变量
- 该函数被调用时的词法作用域
闭包的作用
- 数据封装:保护变量不被外部直接修改
- 维持私有变量:通过函数内部创建变量,外部无法访问
- 回调函数:闭包常用于实现回调,保留上下文数据
示例代码
function createCounter() {
let count = 0; // 私有变量
return function() { // 闭包
count++;
console.log(count);
};
}
const counter = createCounter();
counter(); // 1
counter(); // 2
常见用法
- 📚 数据缓存:
/js/advanced
- 🔁 函数工厂:创建带有特定状态的函数
- 🧠 延迟执行:如
setTimeout
中的闭包
注意事项
- 🚫 避免内存泄漏:闭包会延长对象的生命周期
- 🔄 循环中的闭包:确保及时释放引用
点击这里了解更多关于JavaScript异步编程的内容!