尽管 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对内部函数的作用域生效。这样的编码方式使得变量和函数的作用域变得清晰。