大括号
应该使用大括号,尤其在那些可用可不用的地方,如果你的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之间使用空格
反对增加空格的一个说法是增加文件体积,但是在压缩之后并不存在这个问题。提高代码可读性经常被忽视的一个方面就是垂直的空格,你可以使用空行来分开代码,就好像写文章时候的段落一样。
出处:rockux
责任编辑:bluehearts
上一页 如何编写高质量的Javascript代码 [7] 下一页 如何编写高质量的Javascript代码 [9]
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|