JavaScript 词条目录
前端Wiki/词条/闭包

闭包

定义函数与其词法作用环境的组合,使内部函数可以访问并记住外层变量

闭包指「函数 + 它声明时所在的作用域」。当内部函数被返回到外层作用域之外执行时,它依然能访问创建时的变量——这些变量被「关」在了函数里,不会随外层函数执行结束而销毁。

闭包是 JS 最强大的特性之一:模块封装(私有变量)、函数工厂、计数器、缓存都靠它。代价是内存——被闭包引用的变量不会回收,所以别在闭包里无意识囤积大对象。

JavaScript
function counter() {
  let n = 0;                    // 被闭包保留的私有变量
  return () => ++n;
}
const c = counter();
c(); c();                       // 2,n 跨调用保持

// 模块模式:私有 API key
function createSdk(key) {
  return { call: () => fetch(url, { headers: { key } }) };
}
⚠ 常见误区
🔗 相关词条作用域原型链this 指向函数
← 返回来源章节js/g2c1s3.html