JavaScript規範

原則

  • as short as possible(如無必要,勿增註釋):儘量保持代碼本身的清晰性可讀性
  • as long as necessary(如有必要,儘量詳細):合理的註釋、空行排版等,可以讓代碼更易閱讀、更具美感。

1. JavaScript命名規範

  • 變量使用駝峯命名方式(Camel)

    • var userName = {};
  • 私有屬性、變量和方法都以_下劃線命名

    • var _privateMethod = {};
  • 常量全部使用大寫字母,單詞間下劃線分割的方式命名

    • var PI_PI = 3.14;
  • 函數名使用駝峯命名

  • 函數參數使用駝峯命名

    function formateString(oldString) {
         
    }
    
  • 使用帕斯卡命名法(Pascal)

  • 類的屬性和方法,使用駝峯命名法

    function OldPerson(oldName, newName){
       this.oldName = oldName;
       this.newName = newName;  
    }
    
  • 枚舉變量使用帕斯卡命名法

  • 枚舉的屬性,全部使用大寫字母,單詞間下劃線分割的命名法

  • 由多個單詞組成的縮寫詞,在命名中,根據當前命名法和出現的位置,所有字母的大小寫與首字母的大小寫保持一致。

    function XMLParser() {}
    function insertHTML(element, html) {}
    var httpRequest = new HTTPRequest();
    

命名的詞法

  • 類名,使用名詞
    • var name = "";
  • 函數名,使用動賓結構
    • function getName(){}
  • boolean類型的變量,使用is或者has開頭。
    var isReady = false;
    var hasApple = true;
    
  • Promise對象用動賓短語的進行時表達
    var loadingData = ajax.get('url');
    loadingData.then(callback);
    

接口命名規範

  • 可讀性強
  • 儘量不與 jQuery 社區已有的習慣衝突
  • 儘量寫全。不用縮寫,除非是下面列表中約定的;(變量以表達清楚爲目標,uglify 會完成壓縮體積工作)
  1. 排版縮進採用統一的縮進方式排版代碼。縮進爲2個空格。
If(condition1 || condition2) {
  action1;
} else if (condition3 && condition4) {
  action2;
} else if (condition5
        && condition6
        && condition7
        && condition8) {
  action2;
} else {
  default action;
}
  1. 關鍵詞、條件括弧後面使用空格;運算操作符號兩側使用空格;語句分割符‘,’後面使用空格;
var name[空格]=[空格]value;
  if[空格](a,[空格]b) {
}
  1. 左大括號"{"可以居行尾,右大括號"}"單獨佔一行,居行首
if (a && b) {
}
  1. 句末必須使用分好結尾;
var fn = function () {
};//這裏沒有分號的話,腳本解析器會報錯!!!
(function () {
    alert(1);
})();
  1. if、while、for、do語句的執行體總是用"{"和"}"括起來

總是使用 var 來聲明變量。
如不指定 var,變量將被隱式地聲明爲全局變量,這將對變量難以控制。
如果沒有聲明,變量處於什麼定義域就變得不清(可以是在 Document 或 Window 中,也可以很容易地進入本地定義域);
變量聲明可以只用一個 var 關鍵字聲明,多個變量用逗號隔開;
賦值儘量寫在變量聲明當中。
使用 === 精確的比較操作符,避免在判斷的過程中,由 JavaScript 的強制類型轉換所造成的錯誤(比較的雙方必須是同一類型纔會有效);
在用if作判斷的時候,下列表達式統統返回 false:false, 0, undefined, null, NaN, ''(空字符串).
統一使用單引號(‘),不使用雙引號(“)。這在創建 HTML 字符串非常容易辨別;

true和false布爾表達式

  • 類型檢測優先使用 typeof
  • 對象類型檢測使用 instanceof
  • null 和 undefined的檢測使用 == null
運算式 返回值
null false
undefined false
''(空字符串) false
數字0 false
"0" true
[] true
{} true
undefined == null true
[] == [] false

不要在Array上使用for-in循環

for-in 循環只用於object/map/hash循環,
因爲for-in循環不是從0到length-1進行遍歷的,它遍歷的是所有出現在對象和原型鏈上的key

二元和三元操作符

  • 操作符始終寫在前一行,避免分號隱式插入產生問題
  • 三元操作符用於代替if操作

&&和||
二元操作符是可短路的,只有在必要的時候纔會計算到最後一項。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章