編寫可維護的JavaScript
結合自己的代碼習慣給出推薦的代碼風格
一、格式化
- 縮進4個空格
- 語句結尾分號不要省略
- 行的長度不要超過80
- 超長換行時,在運算符後換行,下一行增加兩個層級的縮進;
callAFuction(document, element, window, “some string value”, true, 123,
navigator);
如果是賦值,則保持第二行位置與賦值運算符位置對齊
Var result = something + anotherThing + yetAnotherThing + somethingElse +
anotherSomethingElse;
- 空行
在方法之間;在方法中的局部變量和第一條語句之間;在多行或單行註釋之前;在方法的邏輯片段之間
插入空行,提高可讀性。
二、命名
- 變量函數:小駝峯式命名, 變量儘量短但要有語義,在名字中體現數據類型,比如count, length, size表示數字類型,name, titile, message表示字符串,i, j, k表示循環變量,避免用foo, bar, tmp此類無意義的命名;函數和方法可用動詞表示,比如一些常見前綴can, has, is, get, set;
if (isEnabled()) {
setName(“Nicholas”);
}
If (getName() === “Nicholas”) {
doSomething();
}
- 常量,使用大寫字母和下劃線命名,比如MAX_COUNT, URL
- 構造函數,大駝峯命名
三、註釋
- 代碼很清晰時無需註釋
- 難理解的代碼加註釋
- 可能被誤會是錯誤時加註釋
四、塊語句
if (condition) {
doSomething();
}
- if後的空格
- 即使一行代碼也不要省掉{}
- {跟在if的一行
- 縮進與分號
五、循環
- 推薦for循環中儘量用if語句來代替continue的邏輯,更易閱讀
- for-in循環是用來遍歷對象的,不該用來遍歷數組
六、變量、函數和運算符
- 推薦將所有的變量聲明放在函數頂部而不是散落在各個角落
- 不推薦在函數內聲明函數
- 不推薦在語句塊內聲明函數
- doSomething (item); 不推薦,看起來像一個塊語句while (item) {…
七、分離html/css/javascript
- 不要用Css表達式
- 不要在html裏寫內聯Javascript
- 不要在javascript中修改css屬性,可以修改classname
- 不要在javascript中直接修改html,可用模板定義
八、儘量少使用全局變量
九、避免用空比較value !== null
用*typeof, instanceof, Object.prototype.toString.call(value)*來檢測值
十、將配置數據從代碼中分離出來
- URL
- 需要展現給用戶的字符串
- 重複的值
- 設置(比如每頁的配置項)
- 任何可能發生變更的值