避免全局变量污染的办法

原创 lingwer111 随笔 JavaScript 278阅读 2017-05-10 16:07:00 举报

全局变量存在很多问题,他很容易造成命名空间污染,在大中型项目中如果不加以限制和管理,就容易出问题,如题有几个 一:变量名冲突。二:全局变量也在原型链查找的范围内,大量的全局变量会增加原型链查找的时间,影响性能。
就连JavaScript 设计者本人也承认全局变量是设计上的失误,在没有足够的时间考虑一些东西的情况下导致的结果。
作为普通开发者,我们有必要减少全局变量的使用,即使需要,也要把他的污染降到最低。下面2种方式可以相对降低全局变量带来的问题。

1,使用命名空间
适当地使用命名空间,并不会杜绝全局变量,但可以减少全局变量的数量。
最简单的方式依然是用对象字面量的方式
javascript 代码

把a和b都定义为namespace的属性,这样可以减少变量和全局作用域打交道的机会。另外我们还可以动态得创建命名空间,代码如下(引自Object-oriented JavaScript 一书)
javascript 代码

2,使用闭包封装私有变量
这种方式把一些变量封装在闭包内部,只暴露一些接口和外界通信
javascript 代码

我们用下划线来约定私有变量_name和_age,他们被封装在闭包产生的作用域中,外部是访问不到这个两个变量的,着就避免了对全局的命令污染

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复