ES10是與2019年相對應的ECMAScript版本。這個版本中的新功能沒有ES6(2015)中的那麼多。可是,也不乏一些有用的功能。正則表達式
本文在簡單的代碼示例中介紹了ES10提供的功能。這樣,您無需複雜的解釋便可快速瞭解新功能。算法
固然,須要具有JavaScript的基礎知識才能徹底理解所介紹的新功能。數組
ES2019中的JavaScript新功能包括:async
兩個新的數組方法:函數
Array.flat() 方法建立一個新數組,全部子數組元素都以遞歸方式合併到該數組中,直至達到指定深度。this
Array.flatMap() 方法首先使用map函數轉換每一個元素,而後將結果展平爲新數組。它與map()後再調用深度爲1的flat() 效果相同,可是flatMap()將二者合併爲一種方法,效率更高。編碼
把鍵值對數組爲元素的二維數組轉換爲一個對象。spa
matchAll() 方法返回全部與正則表達式匹配字符串的結果的迭代器,包括捕獲組。prototype
有兩種新的String方法可從字符串中刪除空格:3d
trimStart() 方法從字符串的開頭刪除空格。
trimEnd() 方法從字符串末尾刪除空格。
當建立符號時,能夠提供一個字符串做爲描述。在ES10中,有一個獲取描述的訪問器。
過去,try / catch語句中的catch子句須要一個變量。如今,它容許開發人員使用try / catch而不建立未使用的error變量綁定。
在ES10以前的版本中,不接受非轉義的行分隔符U+2028和段落分隔符U+2029。
U+2028是段落分隔符。
U+2029是行分隔符。
JSON.stringify() 可能返回U+D800和U+DFFF之間的字符,來做爲沒有等效UTF-8字符的值。可是,JSON格式須要UTF-8編碼。解決方案是,將未配對的替代代碼點表示爲JSON轉義序列,而不是將其做爲單個UTF-16代碼單元返回。
V8的先前實現,對包含10個以上項的數組使用了不穩定的快速排序算法。
一種穩定的排序算法是,當兩個具備相同鍵的對象在排序輸出中出現的順序,與未排序輸入中出現的順序相同。
toString() 方法返回一個表示函數源代碼的字符串。在ES6中,當在函數上調用toString時,它將根據ECMAScript引擎返回該函數的字符串表示形式。若是可能,它將返回源代碼,不然-一個標準化的佔位符。
BigInt是第7個原始類型,它是一個任意精度的整數。而不單單是在9007199254740992處的最大值。
動態import()返回所請求模塊的Promise。所以,可使用async/await 將導入的模塊分配給變量。
全局 this 在ES10以前還沒有標準化。在生產代碼中,您能夠經過編寫下邊代碼來「標準化」它:
如今,新的語法字符#(哈希標籤)用於直接在類中定義變量,函數,getter和setter,以及構造函數和類方法。
自2015年ES6出現以來,這個語言就一直處於高速發展的狀態。在這篇文章中,咱們回顧了ES10(2019)中出現的功能,並介紹了一些在ES11(2020)中將保持穩定的功能,由於它們處於狀態3,而且可能最終會在下一版中實現標準化。
儘管這些功能中的許多功能對於Web應用程序的開發可能不是必需的,可是它們提供了經過技巧或大量冗長代碼才能實現的可能性。