js优化攻略(一):减少全局变量污染
js中的全局变量的定义就是在所有作用域中都可见的变量,它的定义方法有三种:
(1)在任何函数外面直接执行var语句
eg:var f = 'value';
(2)直接添加一个属性到全局对象中,全局对象就是所有全局对象的容器,在web浏览器中,全局对象是window
eg: window.f = 'value';
(3)直接使用未经声明的变量,以这种方式定义的全局变量被称为隐式的全局变量
eg:f = 'value';
由于全局变量可以被程序中的任何部分在任意时刻改变,所以会使得程序的复杂度大大增加,在程序中使用全局变量降低了程序的可靠性,下面提出两种避免使用全局变量的方法:
(1)在应用程序中创建一个唯一的全局变量,并定义该变量为当前应用的容器:
var test = {};
test.name = {
"firstName" = 'first',
"lastName" = 'last'
};
test.work = {
number = 123,
get = function(){
alert("get attribute");
}
};
(2)使用闭包
var foo = function(){
var a = 1,b = 2;
var bar = function(){
var b = 3,c = 4;
a += b + c;
};
bar();
};
js和c语言等其他语言不一样,js支持函数作用域,但是并不支持块级作用域,定义在函数中的参数和变量在函数外都是不可见的,并且在一个函数中的任何位置定义的变量在该函数中的任何地方都可见。
转载于:https://my.oschina.net/sunshinewyf/blog/618876