闭包
闭包是函数保留其词法作用域链的能力,也就是一个函数跟其周围状态的引用捆绑在一起,这样的组合就是闭包
形成
- 函数嵌套: 内部函数定义在外部函数中
- 变量引用:内部函数使用外部函数作用域的变量
- 外部调用:内部函数被外部环境调用(如被返回作为回调)
核心作用
- 变量封装:创建私有变量
- 延长变量的生命周期: 让局部变量在函数执行后继续存活
- 延迟执行:保存异步操作时的上下文
- 函数工厂:动态生成定制函数
典型使用场景
- 防抖、节流
- 柯里化函数
- 模块化开发,hook函数
- 循环中的异步操作
注意事项
- 内存管理:不再使用的闭包及时解除引用(如置为null)
- 循环陷阱:避免所有闭包共享同一变量(可用立即执行函数或者let解决)
- 性能考量:过度使用可能影响内存占用,引发内存泄漏问题