1. 意外的全局变量:
未定义的变量会在全局对象创建一个新变量,如下:
function foo(arg) {
bar = "this is a hidden global variable";
}
函数foo内部忘记使用var,实际上js会把bar挂载到全局对象上,意外创建一个全局变量
function foo(arg) {
window.bar = "this is an explicit global variable";
}
另一个意外的全局变量可能由this创建
function foo() {
this.variable = "potential accidental global";
}
// Foo 调用自己,this 指向了全局对象(window)
// 而不是 undefined
foo();
解决方法:
在JavaScript文件头部加上 'use strict' ,使用严格模式避免意外的全局变量,此时上例中的this指向undefined
。如果必须使用全局变量存储大量数据时,确保用完以后把它设置为 null 或者重新定义。