|
|
8#

楼主 |
发表于 2011-3-9 10:56:22
|
只看该作者

大括号
应该使用大括号,尤其在那些可用可不用的地方,如果你的if语句或者for循环只有一句话,那么大括号不是必须的,但是这种时候最好用大括号。这可以让代码保持一致,并且便于升级。
假设你的for循环只有一句。你可以不用大括号,也不会有什么错误。
// bad practice
for (var i = 0; i < 10; i += 1)
alert(i);
但是假如你以后要在这个循环里面添加其他东西呢?
// bad practice
for (var i = 0; i < 10; i += 1)
alert(i);
alert(i + " is " + (i % 2 ? "odd" : "even"));
这时候,虽然第二个alert有缩进,但他还是在循环之外的。所以,无论何时,都应该是用大括号。if语句一样:
// bad
if (true)
alert(1);
else
alert(2);
// better
if (true) {
alert(1);
} else {
alert(2);
}
大括号位置
开发人员也经常争论大括号的位置,放在同一行还是下一行呢?
在具体的例子中,这是个见仁见智的问题。但也有例外,假如程序根据不同的位置做不同的解析呢?这是因为插入分号机制,js对此并不挑剔,他会在你没有添加分号的行之后帮你添加。这在函数返回一个对象字面量然后大括号写在下一行的时候出问题:
// warning: unexpected return value
function func() {
return
// 下面的读取不到
{
name : "Batman"
}
}
如果你想让这个函数返回一个有name属性的对象字面量,这个函数是做不到的,因为插入的分号,返回的应该是一个undefied值。
所以,最后的结论是,必须使用大括号,并且写在同一行。
function func() {
return {
name : "Batman"
};
}
关于分号:跟大括号一样,必须写。这不只是推行严格的写程序的规范,更是在必要的时候解决一些不清楚的地方,比如前面的例子。
空格
正确的使用空格也可以增加程序的可读性和连贯性。写句子的时候你会在逗号和句号之后有一些停顿。在js中可以模仿这样的逻辑。
应该使用空格地方有:
循环中的分号之后
循环中的变量初始化for (var i = 0, max = 10; i < max; i += 1) {…}
数组中的逗号分隔符之后var a = [1, 2, 3];
对象字面量中的逗号var o = {a: 1, b: 2}
函数参数间myFunc(a, b, c)
在函数声明时候的大括号前面function myFunc() {}
匿名函数var myFunc = function () {};
另外一些使用空格比较好的地方就是在那些操作符的两边,比如+, -, *, =, <, >, <=, >=, ===, !==, &&, ||, +=,等等。
// generous and consistent spacing
// makes the code easier to read
// allowing it to "breathe"
var d = 0,
a = b + 1;
if (a && b && c) {
d = a % c;
a += d;
}
// antipattern
// missing or inconsistent spaces
// make the code confusing
var d = 0,
a = b + 1;
if (a && b && c) {
d = a % c;
a += d;
}
最后一个关于空格要注意的,大括号前面的空格。最好使用空格:
在函数定义,id-else,case,循环以及对象字面量的大括号前面使用空格
在大括号}与else、while之间使用空格
反对增加空格的一个说法是增加文件体积,但是在压缩之后并不存在这个问题。提高代码可读性经常被忽视的一个方面就是垂直的空格,你可以使用空行来分开代码,就好像写文章时候的段落一样。 |
|