一、if else 語句中變量賦值爲布爾值編程
if (a > b) { status = true; } else { status = false; } // 能夠簡化爲 status = a > b
if語句的條件會自動轉換爲布爾值,若是在使用時不肯定是否爲布爾值,能夠對錶達式雙重取反(!!).json
二、if else 語句中變量賦值爲非布爾值數組
if (a > b) { status = 1; } else { status = 2; } // 能夠簡化爲 status = a > b ? 1 : 2;
三、用命名常量代替魔數(數值是編程者本身指定的,其餘人不知道數值有什麼具體意義)app
function getUserState() { // 人數達到5人,不考慮時間直接成功 if (users.length == 5) { return 1; } // 超過期間 失敗 if (serverTime > endTime) { return 0; } // 在時間範圍內 && 人數不到5人 if (joinedGroup == '0') { return 2; } else { return 3; } return; }
0,1,2,3這些數字具體的含義不是很清晰,用常量來代替。函數
const STATE = { // 拼團失敗 GROUP_SHOPPING_FAIL: 0, // 拼團成功 GROUP_SHOPPING_SUCCESS: 1, // 符合參加活動的資格 CAN_JOIN: 2, // 已經參加活動 ALREADY_JOIN: 3 }; groupState = STATE => ({joinedUserCount, joinedGroup, serverTime, endTime}) => { if (joinedUserCount >= 5) { return STATE.GROUP_SHOPPING_SUCCESS; } if (serverTime > endTime) { return STATE.GROUP_SHOPPING_FAIL; } return joinedGroup == '0' ? STATE.CAN_JOIN : STATE.ALREADY_JOIN; }
四、函數參數比較多(我的建議超過3個),最好用json對象,在方法裏面要判斷是否傳入對象,沒傳入對象,要賦值爲空對象,防止後面用對象的屬性報錯,傳入的參數最好能夠有個默認值。學習
五、在多個邏輯或(||)表達式中,同一個變量跟多個狀態作===比較。rest
e.target.id == 'titleDrag' || e.target.id == 'subtitleDrag' // 改爲下面這種寫法,在條件比較多時就會顯得比較簡潔: ['titleDrag', 'subtitleDrag'].indexOf(e.target.id) > -1
六、建議再也不使用var命令,使用let或者const,由於使用var聲明的變量會提高到代碼塊的頭部,違反的變量先聲明後使用的原則。code
使用const聲明常量有2個好處:閱讀代碼的人會意識到不該該修改這個值;防止無心間修改變量致使錯誤。server
七、靜態字符串一概使用單引號,包含變量的動態字符串使用反引號(``)。對象
八、rest參數(…變量名)用於獲取函數的多餘參數,將用逗號分隔的參數序列保存到數組中,rest參數中的變量表明一個數組,能夠代替arguments對象。
擴展運算符(…)將一個數組轉爲用逗號分隔的參數序列。若是函數的形參爲多個變量,而實參是一個數組,則不須要使用apply將數組轉化成函數的參數,使用擴展運算符便可展開數組。
九、跟接口相關的代碼最好寫在一個文件中,在一個常量對象中保存接口名稱
const API = { GET_INFOS_BY_USER_ID:'getInfosByUserId' }; export var getInfosByUserId = function (params) { return getJSONP(API.GET_INFOS_BY_USER_ID, params); };
這樣的話,接口易於維護,當接口有變更時,只需改動這一個地方,不須要改動其餘引用該接口的代碼。
十、公共方法記得添加註釋,按照jsDoc格式添加註釋。
十一、代碼的格式要規範,賦值運算符、邏輯運算符先後最好添加空格,賦值語句結束要有分號,尤爲是export導出一個變量,代碼的縮進保持一致,更容易閱讀。
努力學習,不斷總結中~