WebMD
本页大纲

闭包(Closure)

缩写:无

简述

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

使用场景

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

组成与要点

示意(词法捕获,非某语言完整教程):

makeCounter():
  n = 0
  return function inc():
    n = n + 1
    return n
// 返回的 inc 仍能读写当时的 n

实践与应用

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

注意事项

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

关联术语

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