# 闭包（Closure）

### 缩写：无

### 简述

函数与其定义时所捕获的外围词法环境的组合，使函数在离开定义作用域后仍能访问那些绑定。闭包用于回调、工厂函数与状态封装；错误捕获可变变量是经典陷阱。

### 使用场景

事件回调、延迟执行、函数工厂、简易封装私有状态。

### 组成与要点

示意（词法捕获，非某语言完整教程）：
```text
makeCounter():
  n = 0
  return function inc():
    n = n + 1
    return n
// 返回的 inc 仍能读写当时的 n
```
### 实践与应用

• 捕获需要的值时注意当时快照还是变量本身
• 循环中创建闭包要固定每次迭代的值
• 避免闭包持有大图导致内存滞留

### 注意事项

• 意外延长对象寿命
• 异步回调中的可变共享状态

### 关联术语

• 函数：闭包是带环境的函数值
• 作用域：被捕获的词法环境
• 一等函数：函数可作为值传递的前提
• 内存：闭包可能延长对象寿命
