1.塊級做用域
(1)let取代var
var變量存在變量提高效用,let命令沒有這個問題。
(2)全局常量和線程安全
在let和const之間,建議優先使用const,尤爲是在全局環境,不該該設置變量,只應設置常量。
const優於let有幾個緣由:
const能夠提醒閱讀程序的人,這個變量不該該改變
const比較符合函數式編程思想,運算不改變值,只是新建值,並且這樣也有利於未來的分佈式運算
JavaScript編譯器會對const進行優化編程
2.字符串
靜態字符串一概使用單引號或反引號。動態字符串使用反引號。數組
3.解構賦值
使用數組成員對變量賦值時,優先使用解構賦值。
函數的參數若是是對象的成員,優先使用解構賦值。
若是函數返回多個值,優先使用對象的解構賦值,而不是數組的解構賦值。這樣便於之後添加返回值,以及更改返回值的順序。安全
4.對象
單行定義的對象,最後一個成員不以逗號結尾。多行定義的對象,最後一個成員以逗號結尾。
對象儘可能靜態化,一旦定義,就不得隨意添加新的屬性。若是添加屬性不可避免,要使用Object.assign方法。
若是對象的屬性名是動態的,能夠在創造對象的時候,使用屬性表達式定義。
另外,對象的屬性和方法,儘可能採用簡潔表達法,這樣易於描述和書寫。數據結構
5.數組
使用擴展運算符拷貝數組
使用Array.from方法,將相似數組的對象轉爲數組。分佈式
6.函數
當即執行函數能夠寫成箭頭函數的形式。
那些須要使用函數表達式的場合,儘可能用箭頭函數代替。由於這樣更簡潔,並且綁定了this。
簡單的、單行的、不會複用的函數,建議採用箭頭函數。若是函數體較爲複雜,行數較多,仍是應該採用傳統的函數寫法。
全部配置項都應該集中在一個對象,放在最後一個參數,布爾值不能夠直接做爲參數。
不要在函數體內使用arguments變量,使用rest運算符(...)代替。由於rest運算符顯示代表你想要獲取參數,並且arguments是一個相似數組的對象,而rest運算符能夠提供一個真正的數組。
使用默認值語法設置函數參數的默認值。函數式編程
7.Map結構
注意區分Object和Map,只有模擬現實世界的實體對象時,才使用Object。若是隻是須要key:value的數據結構,使用Map結構。由於Map有內建的遍歷機制。函數
8.Class
老是用Class,取代須要prototype的操做。由於Class的寫法更簡潔,更易於理解。
使用extends實現繼承,由於這樣更簡單,不會有破壞instanceof運算的危險。優化
9.Module
首先,Module語法是JavaScript模塊的標準寫法,堅持使用這種寫法。使用import取代require。
若是模塊只有一個輸出值,就使用export default,若是模塊有多個輸出值,就不使用export default,export default與普通的export不要同時使用。
不要在模塊輸入中使用通配符。由於這樣能夠確保你的模塊之中,有一個默認輸出(export default)。
若是模塊默認輸出是一個函數,函數名的首字母應該小寫。
若是模塊默認輸出一個對象,對象名的首字母應該大寫。ui