1. 未声明 / 意外的全局变量
第一种,未声明或者意外的全局变量。全局变量的生命周期最长,直到页面关闭前,它都存活着,所以全局变量上的内存一直都不会被回收。所以当我们写代码的时候如果全局变量使用不当,没有及时回收,或者拼写错误将某个变量挂载到全局变量时,就会发生内存泄漏了。
var a = '这是一个全局变量';
function test(){
b = '变量 b'; //b 成为一个全局变量,不会被回收
}
这段代码中,test 函数中定义了一个变量 b,没有使用 var 或者 let 变量进行声明,这时 b 会成为全局变量,test 执行后变量 b 不会被回收。解决方式也比较简单,在 JavaScript 文件中添加'use strict',开启严格模式,这个时候就不能使用 b 这个意外的全局变量了,开发时就会在浏览器控制台报错,避免这种情况发生。
2. 遗忘的定时器
var someData = getData();
var intervalId = setInterval(function() {
var node = document.getElementById('Node');
if(node) {
node.innerHTML = JSON.stringify(someData));
}
}, 1000);
// 在不使用的时候进行清除
clearInterval(intervalId)