ECMAScript 2019
JavaScript 版本號
舊的 ECMAScript 版本使用數字命名:ES5 和 ES6。
從 2016 年起,版本按年份命名:ES2016、2018、2020……
ES2019 中的新功能
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- 可選的 catch 繫結
- Array.flat()
- Array.flatMap()
- 已修訂的 Array.Sort()
- 已修訂的 JSON.stringify()
- 字串字面量中允許使用分隔符
- 已修訂的 Function.toString()
JavaScript 字串 trimStart() 方法
ES2019 向 JavaScript 添加了 String 方法 trimStart()
。
trimStart()
方法的工作方式類似於 trim()
,但只刪除字串開頭的空格。
JavaScript String trimStart()
自 2020 年 1 月起在所有現代瀏覽器中都得到了支援。
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
2018 年 4 月 | 2020 年 1 月 | 2018 年 6 月 | 2018 年 9 月 | 2018 年 5 月 |
JavaScript 字串 trimEnd() 方法
ES2019 向 JavaScript 添加了 String 方法 trimEnd()
。
trimEnd()
方法類似於 trim()
,但僅移除字串末尾的空格。
JavaScript String trimEnd()
自 2020 年 1 月起在所有現代瀏覽器中都得到了支援。
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
2018 年 4 月 | 2020 年 1 月 | 2018 年 6 月 | 2018 年 9 月 | 2018 年 5 月 |
JavaScript Object fromEntries()
ES2019 向 JavaScript 添加了 Object 方法 fromEntries()
。
方法 fromEntries()
從可迭代的鍵/值對建立物件。
示例
const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);
自己動手試一試 »
JavaScript Object fromEntries()
自 2020 年 1 月起在所有現代瀏覽器中都得到了支援。
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
2019 年 3 月 | 2020 年 1 月 | 2018 年 10 月 | 2019 年 3 月 | 2019年4月 |
可選的 catch 繫結
從 ES2019 開始,如果您不需要 catch 引數,可以省略它:
示例
2019 年之前
try {
// code
} catch (err) {
// code
}
2019 年之後
try {
// code
} catch {
// code
}
可選的 catch 繫結自 2020 年 1 月起在所有現代瀏覽器中都得到了支援。
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
2018 年 4 月 | 2020 年 1 月 | 2018 年 1 月 | 2018 年 3 月 | 2018 年 5 月 |
JavaScript 陣列 flat() 方法
ES2019 向 JavaScript 添加了 Array flat()
方法。
方法 flat()
透過展平巢狀陣列來建立一個新陣列。
JavaScript 陣列 flat()
自 2020 年 1 月起在所有現代瀏覽器中均受支援
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
2018 年 9 月 | 2020 年 1 月 | 2018 年 9 月 | 2018 年 9 月 | 2018 年 9 月 |
JavaScript Array flatMap()
ES2019 向 JavaScript 添加了 Array flatMap()
方法。
flatMap()
方法首先對映陣列的所有元素,然後透過展平陣列建立一個新陣列。
穩定的 Array sort()
ES2019 **修訂了** Array sort()
方法。
2019 年之前,規範允許使用如 QuickSort 等不穩定排序演算法。
ES2019 之後,瀏覽器必須使用穩定的排序演算法。
當按值對元素進行排序時,元素必須保持與其他具有相同值的元素相對位置。
示例
const myArr = [
{name:"X00",price:100 },
{name:"X01",price:100 },
{name:"X02",price:100 },
{name:"X03",price:100 },
{name:"X04",price:110 },
{name:"X05",price:110 },
{name:"X06",price:110 },
{name:"X07",price:110 }
];
自己動手試一試 »
在上面的示例中,當按價格排序時,結果不應出現名稱相對位置不同的情況,例如:
X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110
已修訂的 JSON.stringify()
ES2019 **修訂了** JSON stringify()
方法。
2019 年之前,JSON 無法將用 \u 轉義的字元轉換為字串。
在 ES2019 之前,使用 JSON.stringify()
處理 UTF-8 程式碼點 (U+D800 到 U+DFFF) 會返回損壞的 Unicode 字元,如 ���。
在此修訂之後,包含 UTF-8 程式碼點的字串可以使用 JSON.stringify()
安全地轉換,並使用 JSON.parse()
恢復到原始狀態。
分隔符符號
行分隔符和段落分隔符符號 (\u2028 和 \u2029) 現在允許在字串字面量中使用。
2019 年之前,這些被視為行終止符,會導致錯誤異常。
注意
現在,JavaScript 和 JSON 擁有相同的規則。
ES2019 之前
text = JSON.parse('"\u2028"') 解析為 ''。
text = '"\u2028"' 會給出 **語法錯誤**。
已修訂的 Function toString()
ES2019 **修訂了** Function toString()
方法。
方法 toString()
返回一個表示函式原始碼的字串。
從 2019 年起,toString() 必須返回函式的原始碼,包括註釋、空格和語法細節。
2019 年之前,不同的瀏覽器會返回函式的不同變體(例如,不包含註釋和空格)。從 2019 年起,函式應精確返回其編寫時的狀態。