前端 js 经典:内存泄漏

71 阅读1分钟

1.意外全局变量

function fn() {
  a = 10;
}
fn();
console.log(window.a); // 10

解决方法:使用严格模式 use strict

2.计时器

setInterval("内存泄漏", 1000); // 字符串
setInterval(() => {
  console.log(1)
}, 1000) // 不停止

解决方式:清理计时器

3.闭包

// 在fn创建的内部函数fn1是不会回收的,因为它被全局变量f引用, 处于一个随时被调用的状态,所以会造成内存泄漏
function fn() {
  var number = 10;
  function fn1() {
    console.log(++a);
  }
  return fn1;
}
var f = fn();
f();

解决方式:执行完成后设置为null,f = null

4.console.log

console.log 对象不能被垃圾回收

5.缓存

建议所有缓存都设置好过期时间,如果缓存过多的话也会造成内存泄漏