闭包(Closure)
缩写:无
简述
函数与其定义时所捕获的外围词法环境的组合,使函数在离开定义作用域后仍能访问那些绑定。闭包用于回调、工厂函数与状态封装;错误捕获可变变量是经典陷阱。
使用场景
事件回调、延迟执行、函数工厂、简易封装私有状态。
组成与要点
示意(词法捕获,非某语言完整教程):
makeCounter():
n = 0
return function inc():
n = n + 1
return n
// 返回的 inc 仍能读写当时的 n
实践与应用
• 捕获需要的值时注意当时快照还是变量本身
• 循环中创建闭包要固定每次迭代的值
• 避免闭包持有大图导致内存滞留
注意事项
• 意外延长对象寿命
• 异步回调中的可变共享状态
关联术语
• 函数:闭包是带环境的函数值
• 作用域:被捕获的词法环境
• 一等函数:函数可作为值传递的前提
• 内存:闭包可能延长对象寿命