JavaScript 代碼規(guī)范

1抑党、縮進(jìn)

每一行的層級(jí)由 4 個(gè)空格組成包警,避免使用制表符縮進(jìn)

2、行的長(zhǎng)度

每行長(zhǎng)度不超過 80 個(gè)字符底靠,如果超過害晦,應(yīng)當(dāng)在一個(gè)運(yùn)算符(逗號(hào),加號(hào)等)后換行暑中。下一行應(yīng)當(dāng)增加兩級(jí)縮進(jìn)( 80個(gè)空格)

3壹瘟、運(yùn)算符的行間距

二元運(yùn)算符前后必須使用一個(gè)空格來保持表達(dá)式的簡(jiǎn)潔,操作符包括賦值運(yùn)算符和邏輯運(yùn)算符

        1 + 2 = 3

4鳄逾、括號(hào)間距

當(dāng)使用括號(hào)時(shí)稻轨,緊接左括號(hào)之后和緊接右括號(hào)之前不應(yīng)該有空格

        if (num > 1)

5、對(duì)象直接量

對(duì)象直接量應(yīng)當(dāng)使用如下格式

  • 起始左花括號(hào)應(yīng)當(dāng)同表達(dá)式保持一行

  • 每個(gè)屬性的名值對(duì)應(yīng)當(dāng)保持一個(gè)縮進(jìn),第一個(gè)屬性應(yīng)當(dāng)在左花括號(hào)后另起一行

  • 每個(gè)屬性的名值對(duì)應(yīng)當(dāng)使用不含引號(hào)的屬性名,其后緊跟一個(gè)冒號(hào)(之前不含空格) ,而后是值

  • 倘若屬性值是函數(shù)類型,函數(shù)體應(yīng)當(dāng)在屬性名之下另起一行,而且其前后就均保留一個(gè)空格

  • 一組相關(guān)的屬性前后可以插入空行以提升代碼的可讀性結(jié)束的右花括號(hào)應(yīng)當(dāng)獨(dú)占一行

        let obj = {
            // 插入空行
            a: 1,

            fun: function () {

            }
        }

6雕凹、注釋

頻繁地使用注釋有助于他人理解你的代碼,如下情況應(yīng)當(dāng)使用注釋

  • 代碼晦澀難懂

  • 可能被誤認(rèn)為錯(cuò)誤的代碼

  • 必要但并不明顯的針對(duì)特定瀏覽器的代碼

  • 對(duì)于對(duì)象殴俱、方法或者屬性,生成文檔是有必要的(使用恰當(dāng)?shù)奈臋n注釋)

6.1 單行注釋

單行注釋單行注釋應(yīng)當(dāng)用來說明一行或者一組相關(guān)的代碼。 單行注釋可能有如下三種使用方式

  • 獨(dú)占一行的注釋枚抵,用來解釋下一行代碼

  • 在代碼行的尾部注釋,用來解釋它之前的代碼

  • 多行,用來注釋掉一個(gè)代碼塊

  • 對(duì)于行尾的情況线欲,代碼和注釋間至少一個(gè)空格

        // 獨(dú)占一行的注釋
        let num = 1; // 代碼行的尾部注釋
6.2 多行注釋

多行注釋應(yīng)當(dāng)在代碼需要更多的文字去解釋的時(shí)候使用。每個(gè)多行注釋應(yīng)當(dāng)有如下三行

  • 首行僅僅包含 / 注釋開始,該行不能有其他文件

  • 接下來的行 * 開頭并保持左對(duì)齊汽摹。這些行可以有文字描述

  • 最后一行以 * 結(jié)束并與先前行對(duì)齊李丰,也不應(yīng)再有其他文字

多行注釋應(yīng)當(dāng)保持同它描述的代碼一樣的縮進(jìn),后續(xù)每個(gè) * 后加一個(gè)空格

        /*
        * 這是描述
        * 這是描述
        * 這是描述
        */

7、變量聲明

所有變量在使用前都應(yīng)當(dāng)事先定義竖慧,使用一個(gè)var
未初始化值得變量在后面

8嫌套、函數(shù)聲明

函數(shù)應(yīng)當(dāng)在使用前提前定義,不是作為對(duì)象的方法的函數(shù),應(yīng)當(dāng)使用函數(shù)聲明的格式( function 聲明)

函數(shù)內(nèi)的函數(shù)聲明,應(yīng)當(dāng)在 var 聲明后圾旨,立即定義

匿名函數(shù)的自執(zhí)行

        (function () {} {})

9、命名

變量和函數(shù)命名時(shí)要小心魏蔗。命名應(yīng)僅限于數(shù)字字母字符砍的。某些情況可以使用下劃線。最好不好用美元符號(hào) ($) 和反斜杠 (\)
變量命名采用駝峰式,首字母小寫,每個(gè)單詞首字母大寫,變量名的第一個(gè)單詞應(yīng)當(dāng)是一個(gè)名詞(而非動(dòng)詞)以避免和函數(shù)混淆,不要再變量名中使用下劃線莺治。

函數(shù)名也使用駝峰,第一個(gè)單詞應(yīng)當(dāng)是動(dòng)詞(而非名詞) ,也不要使用下劃線

構(gòu)造函數(shù)才能首字母大寫,名稱應(yīng)當(dāng)非動(dòng)詞開頭

常量(值不會(huì)被改變的變量)命名應(yīng)當(dāng)是全部大寫,不同單詞用下劃線隔開

        const NUM = 1;

對(duì)象的屬性同變量的命名規(guī)則相同廓鞠。對(duì)象的方法同函數(shù)的命名規(guī)則相同,如果屬性或者方法是私有(不希望別人訪司) ,應(yīng)當(dāng)在之前加一個(gè)下劃

10、嚴(yán)格模式

嚴(yán)格模式應(yīng)當(dāng)僅限在函數(shù)內(nèi)部使用,千萬不要在全局使用谣旁。

11床佳、賦值

當(dāng)給變量賦值時(shí),如果右側(cè)時(shí)含有比較語句的表達(dá)式,需要使用圓括號(hào)包裹

       let a = 2;
       let b = 2;
       let num = (a > b) ? a : b;

12、等號(hào)運(yùn)算符

使用 === (嚴(yán)格等于)和 ! == (嚴(yán)格不相等)代替 == (相等)和 != (不等)來避免弱類型轉(zhuǎn)換錯(cuò)誤榄审。

13砌们、三元運(yùn)算符

三元運(yùn)算符應(yīng)當(dāng)僅僅用在條件賦值語句中,而不要作為 if 的替代品。

       let num = (a > b) ? a : b;

14、語句

14.1 簡(jiǎn)單語句

每行最多只包含一條語句浪感。所有簡(jiǎn)單的語句都應(yīng)該以分號(hào)結(jié)束

14.2 返回語句

返回語句當(dāng)返回一個(gè)值的時(shí)候不應(yīng)當(dāng)使用圓括號(hào)包裹,除非在某些情況下這么做可以讓返回值更容易理解,

14.3 復(fù)合語句

復(fù)合語句時(shí)大括號(hào)括起來得語句列表昔头。

  • 括起來的語句應(yīng)當(dāng)較符合語句多縮進(jìn)一個(gè)層級(jí)

  • 開始的大括號(hào)應(yīng)當(dāng)在符合語句所在行的末尾;結(jié)束的大括號(hào)應(yīng)當(dāng)獨(dú)占一行且同復(fù)合語句的開始保持一樣的縮進(jìn)

  • 當(dāng)語句是控制結(jié)構(gòu)的一部分時(shí),諸如 if 或者 for 語句,所有的語句都需要用大括號(hào)括起來,也包括單個(gè)語句。這個(gè)約定是讓我們更加方便地添加語句而不用擔(dān)心忘記加括號(hào)而引起 bug

  • if 一樣的語句的開始的關(guān)鍵詞,其后應(yīng)該緊跟一個(gè)空格,起始大括號(hào)應(yīng)當(dāng)在空格之后

14.3.1 if語句

if 語句應(yīng)當(dāng)是下面的格式

       if (判斷條件) {
            // 輸出
       } else {
            // 輸出
       }
14.3.2 for 語句

for 語句的初始化部分不應(yīng)當(dāng)有變量聲明

14.3.3 while 語句
14.3.4 switch 語句

如果一個(gè) switch 不包含 default 的情況,應(yīng)當(dāng)用注釋代替

        switch (key) {
            case value:
                // code
                break;
        
            case value:
                // code
                break;
        
           // 沒有default
        }

15影兽、留白

在邏輯相關(guān)的代碼塊之間添加空行可以提高代碼的可讀性揭斧。

兩行空行雙限在如下情況中使用

  • 在不同的源代碼文件之間
  • 在類和接口定義之間

單行空行僅限在如下情況中使用

  • 方法之間

  • 方法中局部變量和第一行語句中間

  • 多行或者單行注釋之前

  • 方法中邏輯代碼塊之間以提升代碼的可讀性

空格應(yīng)當(dāng)在如下情況中使用

  • 關(guān)鍵詞后跟括號(hào)的情況應(yīng)當(dāng)用空格隔開
  • 參數(shù)列表中逗號(hào)之后應(yīng)當(dāng)留一個(gè)空格
  • 所有的除了點(diǎn) (.) 之外的二元運(yùn)算符,其操作數(shù)都應(yīng)當(dāng)用空格隔開。單目運(yùn)算符的操作數(shù)事件不應(yīng)該用空白隔開峻堰,諸如一元減號(hào),遞增 (++) ,遞減 (-) )讹开。
  • for 語句中的表達(dá)式之間應(yīng)當(dāng)用空格隔開

16、需要避免的

  • 切勿使用像 String 一類的原始包裝類型創(chuàng)建新的對(duì)象捐名。
  • 避免使用eval()
  • 避免使用 with 語句(其實(shí)該語句已經(jīng)被廢除了,所以老夫就不教你們了)

寫在最后:風(fēng)格這種東西,有很多,就拿縮進(jìn)來說:

  • jQuery 核心風(fēng)格指南明確規(guī)定使用制表符縮進(jìn)
  • Daiglas CrockfordJavaScript 代碼規(guī)范規(guī)定使用 4 個(gè)空格字符縮進(jìn)
  • SproutCore 風(fēng)格指南規(guī)定使用2個(gè)空格縮進(jìn)
  • GoogleJavascript 風(fēng)格指南規(guī)定使用 2 個(gè)空格縮進(jìn)
  • Dojo 編程風(fēng)格指南規(guī)定使用制表符縮進(jìn)

所以啊,風(fēng)格很多,大概的了解一下,一切以你所在的團(tuán)隊(duì)風(fēng)格為準(zhǔn)旦万。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市桐筏,隨后出現(xiàn)的幾起案子纸型,更是在濱河造成了極大的恐慌,老刑警劉巖梅忌,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狰腌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡牧氮,警方通過查閱死者的電腦和手機(jī)琼腔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踱葛,“玉大人丹莲,你說我怎么就攤上這事∈蹋” “怎么了甥材?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)性含。 經(jīng)常有香客問我洲赵,道長(zhǎng),這世上最難降的妖魔是什么商蕴? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任叠萍,我火速辦了婚禮,結(jié)果婚禮上绪商,老公的妹妹穿的比我還像新娘苛谷。我一直安慰自己,他們只是感情好格郁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布腹殿。 她就那樣靜靜地躺著独悴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赫蛇。 梳的紋絲不亂的頭發(fā)上绵患,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音悟耘,去河邊找鬼落蝙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛暂幼,可吹牛的內(nèi)容都是我干的筏勒。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼旺嬉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼管行!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邪媳,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤捐顷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后雨效,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迅涮,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年徽龟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叮姑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡据悔,死狀恐怖传透,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情极颓,我是刑警寧澤朱盐,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站菠隆,受9級(jí)特大地震影響托享,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浸赫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赃绊。 院中可真熱鬧既峡,春花似錦、人聲如沸碧查。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嚷辅。三九已至概而,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間攒巍,已是汗流浹背卦方。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工羊瘩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盼砍。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓尘吗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親浇坐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子睬捶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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