//参考《编写可维护的Javascript》
一:缩进
// 第一行的层级由4个空格组成,避免使用制表符tab进行缩进
//好的写法
if (true) {
doSomething();
}
二:行的长度
// 每行长度不应该超过80个字符。如果一行对于80个字符,应当在一个运算符(逗号,加号符)
// 后换行。下一行应当增加两级缩进
//好的写法
doSomething(argument1, argument2, argument3, argument4,
argument5);
三:原始值
// 字符串应当使用双引号(避免使用单引号)且保持一行。避免在字符串中使用斜线另起一行
//好的写法
var name = "M";
//不好的写法
var name = 'M';
//不好的写法:字符串结束之前换行
var longString = "Here's the sorry, of a man
named Brady.";
// 数字应当使用十进制整数,科学计数法表示整数,十六进制整数,或者十进制浮点小数,
// 小数点前后应当至少保留一位数字。避免使用八进制直接量
//好的写法
var count = 10;
var price = 10.00;
var price = 10.0;
var num = 0x23;
//不好的写法
var price = 10.;
var price = .1;
var price = 010;
特殊值null除了下述情况下应当避免使用
// 1.用来初始化一个变量,这个变量可能被赋值为一个对象
// 2.用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象
// 3.当函数的参数期望是对象时,被用作参数传入
// 4.当函数的返回值期望是对象时,被用作返回值传出
Example:
//好的写法
var person = null;
//好的写法
function getPerson() {
if (condition) {
return new Person("M");
} else {
return null;
}
}
//好的写法
var person = getPerson();
if (person !== null) {
doSomething();
}
//不好的写法:和一个未被初始化的变量比较
var person;
if (person != null) {
doSomething();
}
//不好的写法:通过测试判断某个参数是否被传递
function doSomething(arg1, arg2, arg3, arg4) {
if (arg4 !== null) {
doSomething();
}
}
//避免使用特殊值 undefined 判断一个变量是否定义应当使用typeof操作符
//好的写法
if (typeof variable == "undefined") {
//do something;
}
//不好的写法:使用了undefined直接量
if (variable == undefined) {
// do something;
}
四:运算符间距
// 三元运算符前后必须使用一个空格来保持表达式的整洁。
// 操作符包括赋值运算符和逻辑运算符
//好的写法
var found = (value[i] === false);
//好的写法
if (found && (count > 10)) {
doSomething();
}
//好的写法
for (i = 0; i < count; i++) {
process(i);
}
//不好的写法:丢失了空格
var found = (varlues[i]===false);
if (found&&(count>10)) {
doSomething();
}
for (i=0; i<count; i++) {
process(i);
}
五:括号间距
// 当使用括号时,紧接左括号右括号之前不应该有空格
//好的写法
var found = (varlues[i] === false);
//好的写法
if (found && (count > 10)) {
doSomething();
}
//好的写法
for (i = 0; i < count; i++) {
process(i);
}
//不好的写法:左括号之后有额外的空格
var found = ( varlues[i] === item);
六:对象直接量
// 对象直接量应当使用下列格式
// 1.起始左花括号应当使用如下格式
// 2.每个属性的名值对应保持一个缩进,第一个属性应当在左花括号后另起一行
// 3.每个属性的名值对应当使用不含引号的属性名,气候紧跟一个冒号(之前不含空格),而后是值
// 4.倘若属性值是函数类型,函数体应当在属性名之下另起一行,而且其前后均应保留一个空行。
// 5.一组相关的属性前后可以插入空行以提升代码的可读性
// 6.结束的右花括号应当独占一行
Example:
//好的写法
var object = {
key1: value1,
key2: value2,
func: function() {
//do something
},
key3: value3
};
//不好的写法:不恰当的缩进
var object = {
key1: value1,
key2: value2
};
//不好的写法:函数体周围缺少空行
var object = {
key1: value1,
key2: value2,
func: function() {
//do something
},
key3: value3
};
当对象字面量作为函数参数时,如果值是变量,起始花括号应当同函数名在同一行。
所有其余先列出的规则同样适用。
//好的写法
doSomething({
key1: value1,
key2: value2
});
//不好的写法:所有代码在一行上
doSomething({ key1: value1, key2: value2 });