本規範是針對javascript函數式程式設計風格與公司嚴重依賴jQuery進行編碼的現實制定出來。
禁止使用eval,with與caller(ecma262 v5 的use strict要求)。 eval只允許在加密時機器產生。
宣告變數必須加上 var 關鍵字,除了在for(;;)迴圈等語句中,原則上不允許使用連續宣告。因為連 續聲明的效率不如分開聲明高,而且很容易手誤致其暴露到全局作用域下。
常量,全部大寫。
變數名,不能使用拼音,英文單字以駝峰風格組織起來。
分號,能加的地方都加(基本上除了for, function, if, switch, try, while外),防止因為這個問題導致壓縮失敗。
自訂類,只能用於UI庫的構建,業務代碼不准私密自訂類。
原則上不允許使用偽物件(String, Number,Boolean),直接用其字面量。
原則上不允許使用Array與Object,直接用其字面量[], {}。
謹慎處理this,防止綁定失效,指向window,建議使用that引用它。
若想調用函數自身,禁止使用命名函數表達式,在目標函數的第一行編寫以下程式碼實現,詳解請google 《命名函數表達式揭秘》:
var self = arguments.callee;
禁止擴展原生對象的原型,特別是Object.prototype。
禁止在頁面上對某個元素綁定事件,即下面的程式碼風格:
<a href="http://www.php1.cn/">简明现代魔法</a>
禁止使用IE的條件註釋,一壓縮就沒有了。
var f = function () { /*@cc_on if (@_jscript) { return 2* @*/ 3; /*@ } @*/ };
禁止區塊內函數聲明,詳解請google《命名函數表達式揭秘》。
if (x) { //ng function foo() {} } if (x) { var foo = function() {} }
for-in 循環只能用於object。
禁止使用多行字串,因為在編譯時, 不能忽略行起始位置的空白字元; "" 後的空白字元會產生奇怪的錯誤; 雖然大多數腳本引擎支援這種寫法, 但它不是ECMAScript的標準規範。
var myString = 'A rather long string of English text, an error message \ actually that just keeps going and going -- an error \ message to make the Energizer bunny blush (right through \ those Schwarzenegger shades)! Where was I? Oh yes, \ you\'ve got an error and all the extraneous whitespace is \ just gravy. Have a nice day.';
則上不允許字串拼接HTML程式碼,請使用前台範本或背景範本。
字串字面量,使用' 優於"。
註釋,使用JSDoc。
每一行不宜過長,寫完一段程式碼後請用IDE把它格式化一下。
為元素添加自訂變數,統一使用"data-"前綴,放便與HTML5的"data-*"機制相銜接。 ,類別選擇器,標籤選擇器,慎用子元素結構偽類別與位置偽類別(nth- child,:first,:eq,:gt)
在已有jQuery物件搜尋附近的元素節點,不建議使用多層次的find尋找,而使用相關的遍歷函數。優先使用類別庫中的函數)。像是mousewheel事件只能藉助插件。
不在JS檔案中留下未來確定不再使用的程式碼片段。調整樣式時把它誤刪了。請求與執行回調相分離,我們使用dependBy函數,這樣就有效避免多層嵌套的回調,讓程式碼的易懂性大大提高。
以上就是JavaScript的團隊程式設計規格 的內容,更多相關內容請追蹤PHP中文網(m.sbmmt.com)!