JavaScript编程语言的编码规范(3)
== 和 ===
判断"逻辑等"在代码里太平常的不过事情了,但 JavaScript 与其他熟知的编程语言不同的是,除了可以使用两个等号'=='来作判断以为,还可以使用三个等号'==='来进行逻辑等判断。两者的不同是'=='作逻辑等判断时,会先进行类型转换后再进行比较。'==='则不会。因而,'=='进行的判断结果可能产生偏差。'!='与'!=='的区别亦是如此。本文提倡尽量使用'==='来进行逻辑等的判断,用'!=='进行逻辑不等的判断。
清单 6. === 的使用
var valueA = "1";
var valueB = 1;
if ( valueA == valueB) {
alert("Equal");
}
else {
alert("Not equal")
}
//output: "Equal"
if ( valueA === valueB) {
alert("Equal");
}
else {
alert("Not equal")
}
//output: "Not equal"
清单 6 中,valueA 和 valueB 两个变量的值显然是不相等的,起码 valueA 是个字符串,而 valueB 是一个数字。但用'=='进行判断是,程序却输出相等的字样。这是因为编译器对两个变量进行比较时,因为他们的类型不同,而自动地将 valueB 转换成字符串,而后再和 valueA 进行比较的。用'==='得到的判断结果正和预期的结果相符。
+
加号'+'也同样是程序员所熟知的操作符之一。JavaScript 和其他编程语言不同的是,在 JavaScript 中,'+'除了表示数字值相加,字符串相连接以外,还可以作一元运算符用,把字符串转换为数字。因而如果使用不当,则可能与自增符'++'混淆而引起计算错误。这一点,在清单 7 中可以清楚地看出。
清单 7. 巧用 + 号
var valueA = 20;
var valueB = "10";
alert( valueA + valueB); //ouput: 2010
alert( valueA + (+valueB)); //output: 30
alert( valueA + +valueB); //output:30
alert( valueA ++valueB); //Compile error
总结
本文就 JavaScript 代码的排版、命名、声明、语句、和一些特殊字符的使用等方面,谈了自己对 JavaScript 编程规范的建议。此外,还有许多方面需要深入了解研究,如 with, eval 语句和 this 对象的使用等等。我们在认识其普遍性的同时也需要注意其特殊性,在编写代码时多用心留意,以创造更多更优质的程序代码。
作者:王丹丹
转载:http://www.ibm.com/developerworks/cn/web/1008_wangdd_jscodingrule/?ca=drs-tp4608
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
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
//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)
...
var valueA = 1;
var valueB = valueA ///bad
+1;
var valueC = valueB + ///good
valueA;
alert(valueB); //output: valueB=2
alert(valueC);//output: valueC=3
开头
允许名称中包含字母,数字,下划线'_'和美元符号'
从清单 4 的输出可以看出,inF() 函数仅在 outF() 函数的内部生效,局部变量 innerA 对内部函数的作用域生效。这样的编码方式使得变量和函数的作用域变得清晰。
语句
对于简单语句而言,需要提及的仍然是分号必要性,同时,一行最多有一个语句。如果一个赋值语句是用函数和对象来赋值,可能需要跨多行,一定切记要在赋值语句末加上分号。
这是因为 JavaScript 中,所有表达式都可以当语句,遇换行符时会解析为表达式的结束,此时不规范的换行和分号的丢失,可能引入新的错误。
对于复合语句,if, for, while, do, switch, try … catch 等代码体,函数定义的函数体,对象的定义等都需要放在花括号'{}'里面。
'{' 应在行末,标志代码块的开始。
'}' 应在一行开头,标志代码块的结束,同时需要和'{'所在行的开始对齐,以表明一个完整的复合语句段。这样可以极大地提高代码的可阅读性,控制逻辑能清晰地表现出来。
被包含的代码段应该再缩进 4 个空格。