一、意外的全局变量
未声明的变量-window全局变量
当我们在一个函数中给一个变量赋值,但是没有声明它时
function Fn(){
a = "hello";
}
此时这个全局变量a相当于是window对象下的一个变量:
function Fn(){
window.a = "hello";
}
全局变量很难被垃圾回收器回收,所以会进行内存泄露。
使用this创建的变量
还有种情况
function Fn(){
this.a = "hello";
}
Fn();
当然,这个this也是指向的window,因为此时创建的a变量会挂载到window下
- 解决方式是:
- 在JS文件头部或者函数的顶部加上
严格模式
use strict
然后this的指向为undefined,这样就可以避免
如果必须使用全局变量存储大量数据,确保用完之后把它设置为null或者重新赋值定义。
二、被遗忘的计时器,或回调函数
定时器引起
当我们在代码中使用定时器也有可能会造成内存泄漏
var serverData = loadData();
setIntervalDemo = setInterval(function(){
var renderer &