一.基本格式前端
縮進web
建議每級4個空格,能夠給編輯器設置tab = 4個空格,自動轉換數組
分號瀏覽器
不要省略分號,防止ASI(自動插入分號)錯誤編輯器
行寬函數
每行代碼不超過80個字符,過長應該用操做符手動斷行學習
斷行優化
操做符在上一行末尾,且下一行縮進2級,若是是賦值語句,還應該和等號後面部分對齊code
空行對象
函數聲明與函數聲明、變量聲明與函數聲明、函數內部的邏輯塊之間都應該有空行隔開
做者尼古拉斯還建議在流程控制塊頂部留一個空行,但給的例子不是很明確
命名
字面量
P.S.書中有一句很是經典的解釋:
Appropriately written comments help tell the story of code, allowing other developers to drop into a part of the story without needing to hear the beginning.
單行註釋
多行註釋
用來包裹大段註釋,推薦Eclipse風格,例如
/*
* comment line1
* comment line2
*/
注意:
在哪裏添註釋
文檔註釋
應該給各個函數添註釋,包括功能描述、參數、返回值、拋出的錯誤等等,例如推薦的Eclipse風格:
/**
* 添加指定元素到默認數組
*
* @method add
* @param {Number} 將要添加的元素
* @return {Boolean} 添加成功/失敗
* @throw {TypeError} 參數類型不匹配
*/function add(item){
if(typeof item === "number"){
arr.push(item)
}
else{
throw new TypeError();
}
}
花括號對齊方式
建議行尾風格,不推薦次行風格
塊語句空格
if後的圓括號部分先後各有一個空格,例如:
if (expr) {
code
}
switch語句
P.S.《JavaScript語言精粹》的做者道格拉斯認爲不該該用case貫穿(稱之爲雞肋),由於極易引起bug,而尼古拉斯認爲用空行或者註釋說明就行了
with語句
不用
for循環
全部變量都應該在函數體頂部聲明,包括for循環初始化部分用到的變量,避免hosting(提高)引起bug(可能會屏蔽全局變量)
for-in循環
不要用來遍歷數組,用的時候記得加上hasOwnProperty過濾,若是故意遍歷原型屬性,應該用註釋說明
變量聲明
函數體 = 變量聲明 + 函數聲明 + 邏輯語句。用空行隔開各個部分
函數聲明
先聲明再使用,千萬不要把函數聲明放在if分支裏,由於瀏覽器理解不一樣,並且ES沒給標準
函數調用
圓括號先後都不加空格,避免和塊語句混淆
匿名函數當即執行
把當即執行的匿名函數用圓括號包裹,避免與匿名函數聲明混淆
嚴格模式
不要在全局做用域開嚴格模式,只在函數內部開,給多個函數開能夠用匿名函數當即執行限定嚴格模式的做用域
判斷等於
只用===和!==
eval
不用eval()和new Function(),用匿名函數優化setTimeout()和setInterval()
基本包裝類型
不要用new Boolean(), new String(), new Number()
知海匠庫web前端課程:http://www.zhihaijiangku.com 系統學習,快速就業。