在函数顶部使用唯一一个var语句是比较推荐的一种模式,好处是:
1、可以在同一个地方找到所有的变量。
2、避免在变量声明之前使用该变量产生的逻辑错误。
JavaScript允许在函数的任意地方写任意多个var语句,但它们的行为会像在函数体顶部声明变量一样,这种现象被称为“声明提前”,当你在声明语句之前使用这个变量时,可能会造成逻辑错误。
对于JavaScript来说,一旦在某个作用域(同一个函数内)里声明了一个变量,那么这个变量在整个作用域内都是存在的,包括在var声明语句之前的位置。
/* 不熟悉想当然的觉得第一个alert是global,第二个是local。但是结果却非如此。 * 分析: 第一个alert的结果不是全局变量的'global'。因为myname在函数内被声明了,尽管在语句的后面定义,在这个作用域内所有的变量声明都会被提前到函数顶部 * 也就是var myname;那么第一个alert的结果就是undefined; * 因此,为了避免类似带有“歧义”的程序逻辑,最好在使用之前一起声明。 */ myname = "global"; // 全局变量 function func() { alert(myname); // "undefined" var myname = "local"; alert(myname); // "local" } func();
3、可以提醒看到定义的变量 是局部还是全局。
4、代码量更少。
使用一个var定义多个变量的时候,用逗号分隔,也可以直接变量初始化。
function func() { var a, b, sum = a + b, myObject = {}, i; }