a.定义
内层函数能够访问并保留外层函数作用域的变量,即使外层函数执行完毕。
形成条件:
- 存在嵌套函数(内层函数+外层函数);
- 内层函数引用了外层函数作用域中的变量/参数;
- 内层函数被外层函数外部的作用域引用(比如被返回、被赋值给全局变量等)。
b.闭包的优缺点
- 优点:数据私有化、延长变量生命周期、避免全局污染、实现柯里化(是什么???待学习)/防抖节流;
- 缺点:过度使用会导致内存泄漏(变量无法被垃圾回收)、增加代码复杂度。
c.闭包为什么会导致内存泄漏?如何解决?
- 原因:外层函数执行完毕后,其作用域因闭包被保留,变量无法被垃圾回收,长期积累占用内存;
- 解决:
a.不需要闭包时,手动解除引用(如fn=null);
b.避免不必要的闭包嵌套;
c.在浏览器环境中,及时清理DOM相关的闭包引用。

1394

被折叠的 条评论
为什么被折叠?



