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 Crockford
的JavaScript
代碼規(guī)范規(guī)定使用4
個(gè)空格字符縮進(jìn) -
SproutCore
風(fēng)格指南規(guī)定使用2個(gè)空格縮進(jìn) -
Google
的Javascript
風(fēng)格指南規(guī)定使用2
個(gè)空格縮進(jìn) -
Dojo
編程風(fēng)格指南規(guī)定使用制表符縮進(jìn)
所以啊,風(fēng)格很多,大概的了解一下,一切以你所在的團(tuán)隊(duì)風(fēng)格為準(zhǔn)旦万。