JavaScript常见的内存泄露:
1.意外声明全局变量:
eg:
function setName() {
name = 'Jake';
}
解释器会把变量name当作window的属性来创建(相当于window.name = 'Jake'),在Window对象上创建的属性,只要window本身不被清理就不会消失。只需要在变量声明前头加上var、let或const即可
2. 定时器:
eg:
let name = 'Jake';
setInterval(() => {
console.log(name);
},1000);
)
只要定时器一直运行,回调函数中引用的name就会一直占用内存
3.使用JavaScript闭包:
eg:
let outer = function(){
let name = 'Jake';
return function(){
return name;
};
};
以上代码创建了一个内部闭包,只要Outer函数存在就不能清理name,因为闭包一直在引用着它