JavaScript 程序应该尽量放在 .js 的文件中,需要调用的时候在 HTML 中以 <script src="filename.js"> 的形式包含进来。JavaScript 代码若不是该 HTML 文件所专用的,则应尽量避免在 HTML 文件中直接编写 JavaScript 代码。因为这样会大大增加 HTML 文件的大小,无益于代码的压缩和缓存的使用。
这样的注释方式在 JavaScript 代码中经常见到。"initialize valueA to be sero" 这样的注释有什么用呢?难道阅读程序的工程师从"var valueA = 0;"复制语句中看不出来么?"set timeout to be 20s"这条注释,不只是因拷贝、粘贴引起的时间大小的错误,同时也误导了程序员对这条语句的理解。setTimeout() 函数的作用并非是设置函数执行的超时时间,而是等待一定时间后执行所调用的函数,害人匪浅呀。这样的注释内容宁可删掉。
在函数的开始应先用 var 关键字声明函数中要使用的局部变量,注释变量的功能及代表的含义,且应以字母顺序排序。每个变量单独占一行,以便添加注释。这是因为 JavaScript 中只有函数的 {} 表明作用域,用 var 关键字声明的局部变量只在函数内有效,而未经 var 声明的变量则被视为全局变量。我们来看下清单 3。
清单 3. 局部变量声明
从上例的输出惊奇地发现,用 var 声明过的变量 valueA 和没有声明的变量 valueB 是有区别的。特别需要注意的是,在函数内部用 var 声明的变量为局部变量,这样可以有效地避免因局部变量和全局变量同名而产生的错误。
函数的声明
函数也应在调用前进行声明,内部函数应在 var 声明内部变量的语句之后声明,可以清晰地表明内部变量和内部函数的作用域。
<script language="javascript">
var innerA = 1;
function outF() {
var innerA = 2;
function _inF() {
alert("valueA="+innerA);
}
_inF();
}
outF(); //output: valueA=2
_inF(); //error: innerF is not defined
</script>
<script language="javascript">
function F1() {
var valueA = 1;
var valueB = 2;
return valueA + valueB;
}
function F2() {
var valueA = 1;
var valueB = 2;
return
valueA + valueB;
}
alert( F1() ); //output: 3
alert( F2() ); //ouput: undefined
</script>
<script language="javascript">
var valueA = "a";
var valueB = "b";
function f1() {
var valueA = "c";
alert("valueA="+valueA); //output: valueA=c
valueB = "d";
alert("valueB="+valueB); //output: valueB=d
}
f1();
alert("valueA="+valueA); //output: valueA=a
alert("valueB="+valueB); //output: valueB=d
</script>
<script language="javascript">
//following section is used to initialize golbal variables (good)
var valueA = 0; //initialize valueA to be sero (bad)
var valueB = 1;
...
//call f1 function after waiting for 50 seconds. (good)
setTimeout(f1,50000); //set timeout to be 20s (copy error)
...
</script>
<script language="javascript">
var valueA = 1;
var valueB = valueA ///bad
+1;
var valueC = valueB + ///good
valueA;
alert(valueB); //output: valueB=2
alert(valueC);//output: valueC=3
</script>