大括號
應(yīng)該使用大括號,尤其在那些可用可不用的地方,如果你的if語句或者for循環(huán)只有一句話,那么大括號不是必須的,但是這種時候最好用大括號。這可以讓代碼保持一致,并且便于升級。
假設(shè)你的for循環(huán)只有一句。你可以不用大括號,也不會有什么錯誤。
// bad practice for (var i = 0; i < 10; i += 1) alert(i);
但是假如你以后要在這個循環(huán)里面添加其他東西呢?
// bad practice for (var i = 0; i < 10; i += 1) alert(i); alert(i + " is " + (i % 2 ? "odd" : "even"));
這時候,雖然第二個alert有縮進(jìn),但他還是在循環(huán)之外的。所以,無論何時,都應(yīng)該是用大括號。if語句一樣:
// bad if (true) alert(1); else alert(2); // better if (true) { alert(1); } else { alert(2); }
大括號位置
開發(fā)人員也經(jīng)常爭論大括號的位置,放在同一行還是下一行呢?
在具體的例子中,這是個見仁見智的問題。但也有例外,假如程序根據(jù)不同的位置做不同的解析呢?這是因為插入分號機(jī)制,js對此并不挑剔,他會在你沒有添加分號的行之后幫你添加。這在函數(shù)返回一個對象字面量然后大括號寫在下一行的時候出問題:
// warning: unexpected return value function func() { return // 下面的讀取不到 { name : "Batman" } }
如果你想讓這個函數(shù)返回一個有name屬性的對象字面量,這個函數(shù)是做不到的,因為插入的分號,返回的應(yīng)該是一個undefied值。
所以,最后的結(jié)論是,必須使用大括號,并且寫在同一行。
function func() { return { name : "Batman" }; }
關(guān)于分號:跟大括號一樣,必須寫。這不只是推行嚴(yán)格的寫程序的規(guī)范,更是在必要的時候解決一些不清楚的地方,比如前面的例子。
空格
正確的使用空格也可以增加程序的可讀性和連貫性。寫句子的時候你會在逗號和句號之后有一些停頓。在js中可以模仿這樣的邏輯。
應(yīng)該使用空格地方有:
- 循環(huán)中的分號之后
- 循環(huán)中的變量初始化for (var i = 0, max = 10; i < max; i += 1) {…}
- 數(shù)組中的逗號分隔符之后var a = [1, 2, 3];
- 對象字面量中的逗號var o = {a: 1, b: 2}
- 函數(shù)參數(shù)間myFunc(a, b, c)
- 在函數(shù)聲明時候的大括號前面function myFunc() {}
- 匿名函數(shù)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; }
最后一個關(guān)于空格要注意的,大括號前面的空格。最好使用空格:
- 在函數(shù)定義,id-else,case,循環(huán)以及對象字面量的大括號前面使用空格
- 在大括號}與else、while之間使用空格
反對增加空格的一個說法是增加文件體積,但是在壓縮之后并不存在這個問題。提高代碼可讀性經(jīng)常被忽視的一個方面就是垂直的空格,你可以使用空行來分開代碼,就好像寫文章時候的段落一樣。
出處:rockux
責(zé)任編輯:bluehearts
上一頁 如何編寫高質(zhì)量的Javascript代碼 [7] 下一頁 如何編寫高質(zhì)量的Javascript代碼 [9]
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|