JavaScript可以随意定义全局变量被整个程序的所有代码访问。定义全局变量最大的问题是污染了命名空间,不利于代码模块化,削弱了程序灵活性,增大了模块之间的耦合性。当然,这并不是说不提倡定义全局变量。相反,全局变量是必要的,定义的模块也需要暴露一个全局变量供给其他代码调用。
除此之外,全局变量一旦程序运行,系统就会分配一部分内存空间存储全局变量,直到程序关闭,全局变量才会释放。而局部变量,在子程序内工作完成,便会自动释放。能用局部变量就用局部变量,不需要用全局变量就不用全局变量。
为了避免全局名称空间被污染,减少全局变量数量,避免全局变量污染的常用方法包括如下:
1.使用命名空间、对象字面量的方式
只创建一个全局变量,并定义该变量为当前应用容器,把其他全局变量追加在object对象的命名空间下。
var myNameSpace = {
self:{
name: "Laoye",
sex: "男"
},
friend:{
name: "张三",
sex: "男"
}
};
2.利用闭包把所有变量封装成私有变量,只暴露接口与外部通信
(function() {
var method = {};
var name = 'Laoye';
var sex = "男";
method.getMyName = function() {
return name;
};
method.getMySex = function() {
return sex;
};
window.My = method;
})();
console.log(My.getMySex()); //男
console.log(name); //""
命名空间相关文章:https://blog.youkuaiyun.com/Rao_Limon/article/details/88427749