本文类似一篇翻译,原文在这:https://medium.com/@selvaganesh93/javascript-whats-new-in-ecmascript-2019-es2019-es10-35210c6e7f4b

1. Array.Flat()

简介

数组扁平化,可以设置层级,具体推荐阅读讶羽的这篇blog:https://github.com/mqyqingfeng/Blog/issues/36

简要实例

[1,[2,[3]]].flat() // [1, 2 ,[3]]
[1,[2,[3]]].flat(2) //[1, 2, 3]
[1,[2,[3]]].flat(Infinity) //[1,2,3]

2. Array.flatMap()

简介

相当于在原有map的基础上叠加了flat功能, 不过无法设置层级只能扁平一层

简要实例

const arr = [1, 2, 3];
arr.map(x => [x, x*2]); //[[1,2],[3,4],[5,6]]
arr.map(x => [x, x*2]).flat(); // [1, 2, 2, 4, 3, 6]

3. Object.fromEntries()

简介

fromEntries方法将键值对列表转换为对象。

注意 Object.fromEntries 仅接受可迭代,它只会接受Map或Array

简要实例

const arr = [['a',1],['b',2]];
Object.fromEntries(arr);//{a: 1, b: 2}

4. String.trimStart() & String.trimEnd()

简介

去除头部或者尾部空格

为什么有了trimLeft & trimRight还会有trimStart & trimEnd呢?

为了与 String.prototype.padStart 等函数保持一致,标准方法名称为trimStart。 但是,出于 Web 兼容性原因,trimLeft 仍然是 trimStart 的别名。在某些引擎中,这意味着:String.prototype.trimLeft.name === "trimStart";

--MDN

简要实例

'    a'.trimStart(); //'a'
'a    '.trimEnd()

5. 可选捕获参数

简介

catch可以不用必须带有时用不上的参数啦。

try{

}catch(unUsed) {

}

像上文的代码,如果你使用了 eslint 或者其它的工具则会报告一个警告或者错误,但是又不得不写,就很难受……

catch(e){}catch{}底层处理肯定大有可究之处,可惜笔者学艺不精,分析不下去,😭

ecma对应链接:https://tc39.es/proposal-optional-catch-binding/

简要实例

try{

}catch{

}

6. Function.toString()

简介

该toString()方法返回一个表示函数源代码的字符串。

简要实例

function func(){
console.log(1)
//lalal
    //lal
}
func.toString()
//  "function func(){
//  //console.log(1)
//  //lalal
//     //lal
}"

7. Symbol.description

简介

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

简要实例

const sym = Symbol('heihei');
sym.description // "heihei"

8, 格式良好的JSON.stringify()

简介

返回JSON.stringify返回格式错误的Unicode字符串

简要实例

JSON.stringify('\uD834\uDF06') //""𝌆""

9, 数组排序的稳定性

简介

以前,v8对10个及以上元素的数组使用不稳定的quickSort(这块可以看讶羽的https://github.com/mqyqingfeng/Blog/issues/52), 从V8 v7.0/chrome 70 开始,V8使用稳定的Timsort算法
评分相同的用户将保持其排序顺序

简要实例

const usersList = [
    {name:'heihei1',rating: 1},
    {name:'heihei2',rating: 2},
    {name:'heihei3',rating: 1},
    {name:'heihei4',rating: 2}
]
usersList.sort((a,b)=>a.rating-b.rating)
// 0: {name: "heihei1", rating: 1}
// 1: {name: "heihei3", rating: 1}
// 2: {name: "heihei2", rating: 2}
// 3: {name: "heihei4", rating: 2}

10, JSON ⊂ ECMAScript

简介

将ECMA-262语法扩展为JSON的超集。ecma对应链接 https://tc39.es/proposal-json-superset/

JSON语法由ECMA-404定义,并由RFC 7159永久固定,但是ECMA-262 的DoubleStringCharacter和SingleStringCharacter生产可以扩展为允许不转义的U + 2028 LINE SEPARATOR和U + 2029 PARAGRAPH SEPARATOR字符。

--原文直接搬运

简要实例

const usersList = [
    {name:'heihei1',rating: 1},
    {name:'heihei2',rating: 2},
    {name:'heihei3',rating: 1},
    {name:'heihei4',rating: 2}
]
usersList.sort((a,b)=>a.rating-b.rating)
// 0: {name: "heihei1", rating: 1}
// 1: {name: "heihei3", rating: 1}
// 2: {name: "heihei2", rating: 2}
// 3: {name: "heihei4", rating: 2}