本文类似一篇翻译,原文在这: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{}
底层处理肯定大有可究之处,可惜笔者学艺不精,分析不下去,😭
简要实例
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}