只要闭包函数存在引用,其作用域链中的变量就不会被垃圾回收,不当使用可能导致内存泄漏。
论据/示例
function badPattern() {
const largeData = new Array(1000000).fill('x');
return function() {
return largeData.length;
};
}
const fn = badPattern();
// largeData 不会被回收,直到 fn 被置为 null常见场景:
- 事件处理器未移除
- 定时器未清除
- DOM 引用未释放