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 年起,函数应精确返回其编写时的状态。