这里给大家介绍js中一个新手容易忽略的小细-全局变量。 全局变量的问题在于,你的JavaScript应用程序和web页面上的所有代码都共享了这些全局变量,他们住在同一个全局命名空间,所以当程序的两个不同部分定义同名但不同作用的全局变量的时候,命名冲突在所难免。 web页面包含不是该页面开发者所写的代码也是比较常见的,例如:
因此,要想和其他脚本成为好邻居的话,尽可能少的使用全局变量是很重要的。在后面提到的一些减少全局变量的策略,例如命名空间模式或是函数立即自动执行,但是要想让全局变量少最重要的还是始终使用var来声明变量。 由于JavaScript的两个特征,不自觉地创建出全局变量是出乎意料的容易。首先,你可以甚至不需要声明就可以使用变量;第二,JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性。参考下面的代码: 此段代码中的result没有声明。代码照样运作正常,但在调用函数后你最后的结果就多一个全局命名空间,这可以是一个问题的根源。 经验法则是始终使用var声明变量,正如改进版的sum()函数所演示的: 另一个创建隐式全局变量的反例就是使用任务链进行部分var声明。下面的片段中,a是本地变量但是b却是全局变量,这可能不是你希望发生的: b没有通过var声明所以,无意中多了个全局变量。如果你已经准备好声明变量,使用链分配是比较好的做法,不会产生任何意料之外的全局变量,如: 隐式全局变量(没有var声明的变量)和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力。
|
JavaScript中全局变量的问题
最新推荐文章于 2023-12-06 15:20:55 发布