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

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

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

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

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

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

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

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

3.1 花括號(hào)的對(duì)齊方式

推薦將左花括號(hào)放置在語(yǔ)句中第一句代碼的末尾

3.2 塊語(yǔ)句間隔

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

if (condition) {
    doSomething();
}

3.3 switch語(yǔ)句

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

    case "second":
        //代碼
        break; 

    case "third":
        //代碼
        break; 

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

3.4 with語(yǔ)句

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引擎和壓縮工具也無(wú)法對(duì)這段代碼進(jìn)行優(yōu)化,因?yàn)樗麄儫o(wú)法猜出代碼的真正含義。

所以,禁止使用with語(yǔ)句。

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è)問題,他不僅遍歷對(duì)象的實(shí)例屬性,同樣遍歷從原型鏈繼承過來(lái)的屬性。出于這個(gè)原因,使用hasOwnProperty()方法來(lái)為for-in循環(huán)過濾出實(shí)例屬性,如:

var prop;

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

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

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

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

for (i in object) {
    process(items[i]);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容