闭包
什么是闭包?
MDN
:闭包(closure
)是一个函数以及其捆绑的周边环境状态(lexical environment
,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript
中,闭包会随着函数的创建而被同时创建。
简单来说:闭包(closure
)就是能够读取其它函数内部变量的函数。
闭包的作用是什么?
- 模拟私有变量(立即执行函数);
- 让变量的值始终保持在内存中;
日常有哪些地方会用到闭包?
- 防抖节流函数
- 函数科里化
- 模拟私有变量
闭包可能会造成什么问题?
- 被引用的私有变量不能被销毁,增加了内存消耗,容易造成内存泄漏
如何处理闭包造成的内存泄漏?
- 在变量使用完后手动将其赋值为
null
,其将会在下一个垃圾回收周期中被回收掉。