JavaScript編碼風(fēng)格指南:三、語句和表達(dá)式

在JavaScript中,諸如 if 和 for 之類的語句有兩種寫法,使用花括號包裹的多行代碼和不使用花括號的單行代碼。比如:

//不好的寫法
if(condition)
    doSomething();

//不好的寫法
if(condition) doSomething();

//好的寫法
if(condition){
    doSomething();
}

//不好的寫法
if(condition) { doSomething(); }

所有的塊語句都應(yīng)當(dāng)使用花括號,包括:

  • if
  • for
  • while
  • do...while...
  • try...catch...finally

3.1 花括號的對齊方式

推薦將左花括號放置在語句中第一句代碼的末尾

3.2 塊語句間隔

推薦在做圓括號之前和又圓括號之后各放一個(gè)空格,例如:

if (condition) {
    doSomething();
}

3.3 switch語句

switch (condition) {
    case "first":
        //代碼
        break; 

    case "second":
        //代碼
        break; 

    case "third":
        //代碼
        break; 

    default:
        //代碼
}
  • case一個(gè)層級的縮進(jìn),break又一個(gè)層級的縮進(jìn)。
  • 從第二個(gè)case開始,前邊空一行
  • default不省略,即使沒有任何執(zhí)行語句

3.4 with語句

var book = {
    title : "編寫可維護(hù)的JavaScript",
    author : "Nicholas C. Zakas"
};

var message = "The Book is ";

with (book) {
    message += title;
    message += " by " + author;
}

這個(gè)例子中我們分不出message到底是一個(gè)局部變量還是book的一個(gè)屬性,JavaScript引擎和壓縮工具也無法對這段代碼進(jìn)行優(yōu)化,因?yàn)樗麄儫o法猜出代碼的真正含義。

所以,禁止使用with語句。

3.5 for循環(huán)

for循環(huán)有兩種方法可以更改執(zhí)行過程,一個(gè)是break,跳出整個(gè)循環(huán);另一個(gè)是continue,跳出當(dāng)前循環(huán)。不推薦使用continue,例如:

//不推薦的寫法
var values = [ 1, 2, 3, 4, 5, 6, 7 ],
    i,len;

for (i=0, len=values.length; i < len; i++ ) {
    if ( i == 2) {
        continue;
    }
    process(values[i]);
}

//推薦的替代寫法
var values = [ 1, 2, 3, 4, 5, 6, 7 ],
    i,len;

for (i=0, len=values.length; i < len; i++ ) {
    if ( i != 2) {
        process(values[i]);
    }
}

3.6 for-in循環(huán)

1、for-in有一個(gè)問題,他不僅遍歷對象的實(shí)例屬性,同樣遍歷從原型鏈繼承過來的屬性。出于這個(gè)原因,使用hasOwnProperty()方法來為for-in循環(huán)過濾出實(shí)例屬性,如:

var prop;

for (prop in object) {
    if(object.hasOwnProperty(prop)) {
        doSomething();
    }
}

除非你想要遍歷原型鏈屬性,可以去掉hasOwnProperty()方法,但要在注釋中說明。

2、for-in是用來遍歷對象的,不要用來遍歷數(shù)組:

//不好的寫法
var values = [ 1, 2, 3, 4, 5 ],
    i;

for (i in object) {
    process(items[i]);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容