全局变量
尽量不要使用javascript中的全局变量,因为
1.全局变量生命周期长,长期占用内存。
2.js代码可移值性不强,如果出现重名变量,前面的变量将被后面变量覆盖,使用前面变量的脚本出现问题。
在function中不用var修饰的变量为全局变量,例如:
function hello()
{
alert(aa);
}
此表达式由右向左解析,b为全局
function foo() {
var a = b = 0;
// ...
}
应该为如下写法:
function foo()
{
var a, b;
a = b = 0; // both local
}
// 定义三个global变量 var global_var = 1; global_novar = 2; // antipattern (function () { global_fromfunc = 3; // antipattern }()); // attempt to delete delete global_var; // false delete global_novar; // true 删除的是global对象的属性 delete global_fromfunc; // true 删除的是global对象的属性 // test the deletion typeof global_var; // "number" typeof global_novar; // "undefined" typeof global_fromfunc; // "undefined"
在浏览器环境下window对象指向的是global对象,如果非浏览器环境:
var global = (function () { return this; }());