尽管 JavaScript 语言并不要求在变量使用前先对变量进行声明。但我们还是应该养成这个好习惯。这样可以比较容易的检测出那些未经声明的变量,避免其变为隐藏的全局变量,造成隐患。
在函数的开始应先用var关键字声明函数中要使用的局部变量,注释变量的功能及代表的含义,且应以字母顺序排序。每个变量单独占一行,以便添加注释。这是因为JavaScript中只有函数的{}表明作用域,用var关键字声明的局部变量只在函数内有效,而未经var声明的变量则被视为全局变量。
var val1 = 'a';
var val2 = 'b';
function test(){
var valb = 'c';
alert('val1=' + val1); //输出:val1=a
val2 = 'd';
alert('val2=' + val2); //输出:val2=d
}
test();
alert('val1=' + val1); //输出:val1=a
alert('val2=' + val2); //输出:val2=d
从上例的输出惊奇地发现,用var声明过的变量val1和没有声明的变量val2是有区别的。特别需要注意的是,在函数内部用var声明的变量为局部变量,这样可以有效地避免因局部变量和全局变量同名而产生的错误。
函数也应在调用前进行声明,内部函数应在var声明内部变量的语句之后声明,可以清晰地表明内部变量和内部函数的作用域。
var val = 1;
function test(){
var val = 2;
function inner(){
alert('val=' + val);
}
inner();
}
test();
inner();
从上例的输出可以看出,inner()函数仅在test()函数的内部生效,局部变量val对内部函数的作用域生效。这样的编码方式使得变量和函数的作用域变得清晰。