持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
ECMAScript 2019 特性
最初的JavaScript版本号是ES5(2009)和ES6(2015)。从2016年开始,版本按年份命名:ECMAScript 2016、2017、2018、2019。
本章介绍 ECMAScript 2019 中的新特性:
String.prototype.trimStart()
- trimStart() 方法从字符串的开头删除空格。trimLeft() 是此方法的别名。
- 移除原字符串左端的连续空白符并返回一个新字符串
注意:此方法不会直接修改原字符串本身。
示例语法
var str = " foo ";
str = str.trimStart(); // 或写成 str = str.trimLeft();
console.log(str); // "foo "
String.prototype.trimRight()
- trimEnd() 方法从一个字符串的末端移除空白字符。trimRight() 是这个方法的别名。
- 该方法移除原字符串右端的连续空白符并返回,
注意:此方法不会直接修改原字符串本身。
示例语法
var str = " foo ";
str = str.trimRight(); // 或写成 str = str.trimEnd();
console.log(str); // ' foo'
Object fromEntries()
-
Object.fromEntries()方法把键值对列表转换为一个对象。 -
接收一个键值对的列表参数,并返回一个带有这些键值对的新对象。
-
Object.fromEntries是与Object.entries()相反的方法-
不同的是
Object.fromEntries()接收的参数是:类似 Array 、 Map 或者其它实现了可迭代协议的可迭代对象。- 目前所有的内置可迭代对象如下:String、Array、TypedArray、Map 和 Set,它们的原型对象都实现了 @@iterator 方法。
-
Object.entries()接收的参数是: 可以返回其可枚举属性的键值对的对象
-
示例语法
Map 转化为 Object:
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
console.log(Object.fromEntries(map)); // { foo: "bar", baz: 42 }
Array 转化为 Object
const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
console.log(Object.fromEntries(arr)); // { 0: "a", 1: "b", 2: "c" }
可选的捕获绑定
- 在ES2019中,如果你不需要catch参数,你可以省略它
示例语法
- ECMAScript 2019 之前
try {
// code
} catch (err) {
// code
}
- ECMAScript 2019 之后
try {
// code
} catch {
// code
}
Array.prototype.flat()
flat()方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。flat()方法会移除数组中的空项
举个例子
const arr1 = [0, 1, 2, [3, 4]];
console.log(arr1.flat());
// expected output: [0, 1, 2, 3, 4]
const arr2 = [0, 1, 2, [[[3, 4]]]];
console.log(arr2.flat(2));
// expected output: [0, 1, 2, [3, 4]]
Array.prototype.flatMap()
例子
const arr1 = [1, 2, [3], [4, 5], 6, []];
const flattened = arr1.flatMap(num => num);
console.log(flattened); // [1, 2, 3, 4, 5, 6]
JSON.stringify() 优化
-
在2019年之前,JSON无法用\编码的字符串起。
-
在ES2019之前,使用JSON.stringify() JSON上的UTF-8代码点(U+D800到U+DFFF)返回了损坏的Unicode字符,例如�������操作。
- 此修订后,使用UTF-8代码点的字符串用JSON.stringify() 安全转换,然后使用JSON.parse() 返回原件。
Array.sort() 优化
- ES2019修订了数组sort()方法。
- 在2019年之前,该规范允许不稳定的排序算法(例如QuickSort)。
- 现在,主要浏览器必须使用稳定的排序算法:在键上对对象进行排序时,列表中的元素必须将其位置保留在其他对象上,以相同的键。
修订功能tostring()
toString()方法返回一个表示函数源代码的字符串。toString()必须返回该功能的源代码,包括评论,空格和语法详细信息