JavaScript 2019 新特性
JavaScript 2019 新特性
| 功能 | 描述 | |
|---|---|---|
| String trimStart() | 移除字符串开头的空格 | |
| String trimEnd() | 移除字符串结尾的空格 | |
| Object.fromEntries | 根据键值对创建对象 | |
| 可选的 catch 绑定 | 允许在不需要时省略 catch 参数 | |
| Array flat() | 通过扁平化嵌套数组创建一个新数组 | |
| Array flatMap() | 映射所有数组元素并通过扁平化数组创建一个新数组 | |
| Revised Array Sort() | 浏览器现在必须使用稳定的排序算法 | |
| Revised JSON.stringify() | 现在可安全转换包含 UTF-8 代码点的字符串 | |
| 字符串中的分隔符 | 现在允许在字符串中使用行分隔符和段落分隔符(\u2028 和 \u2029) | |
| 已修订的 Function.toString() | 现在返回包含注释、空格和语法详细信息的源代码 |
浏览器支持
自 2020 年 1 月起,所有现代浏览器均支持 ECMAScript 2019:
| Chrome 66 |
Edge 79 |
Firefox 61 |
Safari 12 |
Opera 50 |
| 2018年4月 | 2020年1月 | 2018年6月 | 2018年9月 | 2018年5月 |
JavaScript 字符串 trimStart()
ES2019 为 JavaScript 添加了字符串方法 trimStart()。
trimStart() 方法的作用类似于 trim(),但它只移除字符串开头的空格。
JavaScript 字符串 trimEnd()
ES2019 为 JavaScript 添加了字符串方法 trimEnd()。
trimEnd() 方法的作用类似于 trim(),但它只移除字符串末尾的空格。
JavaScript Object fromEntries()
ES2019 为 JavaScript 添加了 Object 方法 fromEntries()。
fromEntries() 方法可以根据可迭代的键值对创建一个对象。
示例
const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);亲自试一试 »可选的 catch 绑定
从 ES2019 开始,如果您不需要 catch 参数,可以省略它:
示例
2019 年之前:
try {
// 代码
} catch (err) {
// 代码
}
After 2019:
try {
// 代码
} catch {
// 代码
}JavaScript 数组 flat()
ES2019 为 JavaScript 添加了数组的 flat() 方法。
flat() 方法通过扁平化嵌套数组来创建一个新数组。
JavaScript 数组 flatMap()
ES2019 为 JavaScript 添加了数组 flatMap() 方法。
flatMap() 方法首先映射数组的所有元素,然后通过扁平化数组创建一个新数组。
稳定数组 sort()
ES2019 修订了数组的sort()方法。
2019 年之前,规范允许使用不稳定的排序算法,例如快速排序。
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 无法将使用反斜杠 (\) 编码的字符转换为字符串。
在 ES2019 之前,对 UTF-8 代码点(U+D800 到 U+DFFF)使用 JSON.stringify()JSON 会返回类似 ��� 这样的损坏的 Unicode 字符。
在此修订之后,使用 JSON.stringify() 可以安全地转换包含 UTF-8 代码点的字符串,并使用 JSON.parse() 将其还原为原始字符串。
分隔符
字符串字面量中现在允许使用行分隔符和段落分隔符(\u2028 和 \u2029)。
在 2019 年之前,这些符号被视为行终止符,会导致错误异常。
注意
现在,JavaScript 和 JSON 遵循相同的规则。
ES2019 之前:
text = JSON.parse('"\u2028"') 会解析为空字符串。
text = '"\u2028"' 会产生语法错误。
修订后的 toString() 函数
ES2019 修订 了 toString() 函数。
toString() 方法返回一个表示函数源代码的字符串。
自 2019 年起,toString() 必须返回函数的源代码,包括注释、空格和语法细节。
2019 年之前,不同的浏览器会返回不同的函数版本(例如缺少注释和空格)。从 2019 年起,该函数应该按原样返回。
