什么是闭包?

闭包(Closure)是JavaScript中一个核心概念,指函数可以访问并记住其词法作用域,即使该函数在其作用域外执行。

  • 📌 闭包的三个要素:
    1. 函数
    2. 引用该函数的变量
    3. 该函数被调用时的词法作用域

闭包的作用

  1. 数据封装:保护变量不被外部直接修改
  2. 维持私有变量:通过函数内部创建变量,外部无法访问
  3. 回调函数:闭包常用于实现回调,保留上下文数据

示例代码

function createCounter() {
  let count = 0; // 私有变量
  return function() { // 闭包
    count++;
    console.log(count);
  };
}

const counter = createCounter();
counter(); // 1
counter(); // 2
JavaScript_closure

常见用法

  • 📚 数据缓存:/js/advanced
  • 🔁 函数工厂:创建带有特定状态的函数
  • 🧠 延迟执行:如 setTimeout 中的闭包

注意事项

  • 🚫 避免内存泄漏:闭包会延长对象的生命周期
  • 🔄 循环中的闭包:确保及时释放引用

点击这里了解更多关于JavaScript异步编程的内容!