1、 由于在js中,变量可以不用声明即可使用,不用var声明的变量 及在 函数外声明的变量都将成为全局变量。在编写js中,应尽量减少全局变量的个数。防止变量被重写,或者出现不可预测的结果,
2、 不使用var 声明的变量都将默认为window的属性。 这种隐式的全局变量与 用var声明的 全局变量 又有细微的差别。隐式的全局变量会当成window的一个属性,而用var声明的全局变量却不是。 这种差异主要体现在两点:
1)、利用delete是可以删除属性的, 而变量却不能,
2)、typeof 是可以获取到变量的类型, 而隐式全局变量却不能。
3、防止使用任务链进行变量声明 。 类似 这种 var a = b = 1; 由于代码是由右向左执行,实际上相当于 var a = (b=1) ,导致b为全局变量。应尽量使用单var 语句。 如:
var a,b=1,c=2,d;
我曾经被坑过, 因为使用任务链进行变量声明,导致图片轮询效果总出现偏差,查了一两小时才最终找到答案。