ES2019 / ES10增加了什么新功能?

2019-06-2120:43:57WEB前端开发Comments2,518 views字数 1728阅读模式

Array.flat()

Array.flat()返回一个新数组,其中任何子数组都被展开。Array.flat() 没有任何参数的调用,只会展开一层深度。可以提供可选的深度参数,支持连续调用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

Example:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

let arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]];

arr.flat(); // [1, 2, 3, 4, 5, 6, Array(4)];

arr.flat().flat(); // [1, 2, 3, 4, 5, 6, 7, 8, 9, Array(3)];

arr.flat(3); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

// 如果不知道长度,可以直接使用Infinity
arr.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]复制代码

Array.flatMap()

该 Array.flatMap() 方法与ES6Array.Map()方法相同,但同时也支持展平。该Array.flatMap()方法首先使用映射函数映射每个元素,然后将结果展平为新数组。flatMap() 通常非常有用,因为将两者合并到一个方法中效率更高。

Example:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

let arr = [1, 2, 3, 4, 5];

arr.map(x => [x, x * 2]);
// [Array(2), Array(2), Array(2)]
// 0: (2)[1, 2]
// 1: (2)[2, 4]
// 2: (2)[3, 6]
// 3: (2)[4, 8]
// 4: (2)[5, 10]
arr.flatMap(v => [v, v * 2]);
// [1, 2, 2, 4, 3, 6, 4, 8, 5, 10]复制代码

String.trimStart() & String.trimEnd()

String.trimStart()可用于从字符串的开头去掉空白。String.trimEnd()可用于从字符串的尾部去掉空白。

Example:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

let  greeting =  "    Hello World";
console.log(greeting.trimStart());
// "Hello World"
let greeting = "Hello World    ";

console.log(greeting.trimEnd());
// "Hello World"复制代码

可选 Catch Binding

可选的 catch binding 允许开发人员在catch块中,不使用error参数的情况下使用try/catch。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

Example:
// ES2019 之前使用
try {
  // some code
}
catch (err) {
  // error handling code
}
复制代码
// 现在使用ES2019这样的try / catch:
try  {
  // some code
}
catch {
  // error handling code
}复制代码

Object.fromEntries()

Object.fromEntries()创建一个对象或将键值对转换为一个对象。它只接受Iterable迭代 例如:Object.fromEntries(Iterable)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

Example:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

let entries = new Map([["name", "herrylo"], ["age", 24]]);

console.log(Object.fromEntries(entries));
// { name: 'herrylo', age: 24 }复制代码

Symbol.description

只读描述属性,是一个返回Symbol对象的可选描述的字符串。

Example:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

let mySymbol = `My Symbol`;

let symObj = Symbol(mySymbol);

console.log(symObj) // Symbol(mySymbol);

console.log(String(symObj) === `Symbol(${mySymbol})`); // true

console.log(symObj.description); // "My Symbol"

作者:HerryLo
链接:https://juejin.im/post/5d0c7f62518825328a66dff7
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/13718.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/13718.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定