ECMA 2019(ES10) 特性
ECMA 2019(ES10) 特性
- 行分隔符(U + 2028)和段分隔符(U + 2029)符号现在允许在字符串文字中,与 JSON 匹配
- 更加友好的 JSON.stringify
- 新增了 Array 的
flat()
方法和flatMap()
方法 - 新增了 String 的
trimStart()
方法和trimEnd()
方法 Object.fromEntries()
Symbol.prototype.description
Function.prototype.toString()
现在返回精确字符,包括空格和注释- 简化
try {} catch {}
,修改catch
绑定 - Legacy RegEx
- 私有的实例方法和访问器
1.行分隔符(U + 2028)和段分隔符(U + 2029)符号现在允许在字符串文字中,与 JSON 匹配
以前,这些符号在字符串文字中被视为行终止符,因此使用它们会导致 SyntaxError 异常。
2.更加友好的 JSON.stringify
如果输入 Unicode 格式但是超出范围的字符,在原先 JSON.stringify 返回格式错误的 Unicode 字符串。现在实现了一个改变 JSON.stringify 的第 3 阶段提案,因此它为其输出转义序列,使其成为有效 Unicode(并以 UTF-8 表示)
3.新增 Array 的flat()
方法和flatMap()
方法
flat()
和flatMap()
本质上就是是归纳(reduce) 与 合并(concat)的操作。
Array.prototype.flat()
flat()
方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
flat()
方法最基本的作用就是数组降维
const arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]const arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]const arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]//使用 Infinity 作为深度,展开任意深度的嵌套数组
arr3.flat(Infinity);
// [1, 2, 3, 4, 5, 6]
- 其次,还可以利用
flat()
方法的特性来去除数组的空项
const arr4 = [1, 2, , 4, 5];
arr4.flat(); // [1, 2, 4, 5]
Array.prototype.flatMap()
flatMap()
方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 和 深度值 1 的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。 这里我们拿 map 方法与 flatMap 方法做一个比较。
const arr1 = [1, 2, 3, 4];arr1.map((x) => [x * 2]);
// [[2], [4], [6], [8]]arr1.flatMap((x) => [x * 2]);
// [2, 4, 6, 8]// 只会将 flatMap 中的函数返回的数组 “压平” 一层
arr1.flatMap((x) => [[x * 2]]);
// [[2], [4], [6], [8]]
4.String 的trimStart()
方法和trimEnd()
方法
新增的这两个方法很好理解,分别去除字符串首尾空白字符,这里就不用例子说声明了。
5.Object.fromEntries()
Object.entries()
方法的作用是返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。
而Object.fromEntries()
则是 Object.entries()
的反转。
Object.fromEntries()
函数传入一个键值对的列表,并返回一个带有这些键值对的新对象。这个迭代参数应该是一个能够实现@iterator 方法的的对象,返回一个迭代器对象。它生成一个具有两个元素的类似数组的对象,第一个元素是将用作属性键的值,第二个元素是与该属性键关联的值。
- 通过 Object.fromEntries, 可以将 Map 转化为 Object:
const map = new Map([["foo", "bar"],["baz", 42],
]);
const obj = Object.fromEntries(map);
console.log(obj); // { foo: "bar", baz: 42 }
- 通过 Object.fromEntries, 可以将 Array 转化为 Object:
const arr = [["0", "a"],["1", "b"],["2", "c"],
];
const obj = Object.fromEntries(arr);
console.log(obj); // { 0: "a", 1: "b", 2: "c" }
6.Symbol.prototype.description
通过工厂函数 Symbol()创建符号时,您可以选择通过参数提供字符串作为描述:
const sym = Symbol("The description");
以前,访问描述的唯一方法是将符号转换为字符串:
assert.equal(String(sym), "Symbol(The description)");
现在引入了 getter Symbol.prototype.description 以直接访问描述:
assert.equal(sym.description, "The description");
Function.prototype.toString()
现在返回精确字符(源代码),包括空格和注释
function /* comment */ foo /* another comment */() {}
// 之前不会打印注释部分
console.log(foo.toString()); // function foo(){}
// ES2019 会把注释一同打印
console.log(foo.toString()); // function /* comment */ foo /* another comment */ (){}
// 箭头函数
const bar /* comment */ = /* another comment */ () => {};
console.log(bar.toString()); // () => {}
修改 catch
绑定
在 ES10 之前,我们必须通过语法为 catch 子句绑定异常变量,无论是否有必要。很多时候 catch 块是多余的。 ES10 提案使我们能够简单的把变量省略掉。
不算大的改动。
之前是:
try {// do sth
} catch (e) {// do sth
}
现在是:
try {// do sth
} catch {// do sth
}
ECMA 2019(ES10) 特性相关推荐
- SQL Server 2019 新特性之 SQL Server大数据群集 介绍(一)
SQL Server 2019 新特性之 SQL Server大数据群集 介绍(一) 从开始SQL Server 2019 预览,SQL Server 大数据群集允许你部署的 Kubernetes 上 ...
- 云世界,一切如梦幻,数据也玩虚拟化。 SQL Server 2019 新特性系列一:数据虚拟化
SQL Server 2019 新特性系列一:数据虚拟化 最新更新 SQL Server已经到了CTP2.2版本,主要更新了如下功能: 大数据集群:在大数据群集上使用 azure 数据工作室中的 sp ...
- 新年新气象,从SQL Server 2019新特性开始!
SQL Server 2019新特性开篇概述 2019年了,新年伊始,SQL Server 2019已经到CTP 2.1 ,一直没有认真的学习SQL Server 2019 ,既然是新年新气象,就从新 ...
- VisualStudio 2019 新特性
很多小伙伴都好奇 VisualStudio 2019 有哪些功能,下面让我介绍一些好玩的特性 在安装完成之后会看到创新的欢迎界面,这个欢迎界面支持输入关键字搜项目,同时支持选择语言平台 很多小伙伴都说 ...
- ECMAScript 2019(ES10)新特性简介
简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性. ES10引入了2大特性和4个小的特性,我们 ...
- ECMAScript 2019(ES10) 的新特性总结
快速通道: ES6.ES7.ES8.ES9.ES10.ES11.ES12.ES13新特性大全 老规矩,先纵览下 ES2019 的新功能: Array.flat()和Array.flatMap():数组 ...
- 直播预告 - 微软MVP为你揭秘Visual Studio 2019新特性
作为"宇宙第一IDE"的Visual Studio集成开发环境,已经经历了超过十几年的迭代成为一款功能丰富且高效的开发工具,微软自己给Visual Studio 的定位是 &quo ...
- ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13新特性大全
本文是对 ES6 至 ES13 常用到的特性的总结,关于每个特性的详细内容,都有单独的文章进行详细讲述,可以跳转到具体文章进行学习查看.学习永无止境大家一起努力 . 文章为从新到旧的顺序. ECMAS ...
- SQL Server 2019 (15.x) 新特性概要
2019.11.4 SQL Server 2019发布,趁热打铁了解下2019的新特性.下面整理一些个人感觉重要的或者工作上能用到的新特性,有删减,完整版参考 SQL Server 2019 中的新增 ...
最新文章
- 初次体验hiphop-php
- 网络编程(二)NSURLSessionConfiguration
- hibernate中的 bag
- day58-activiti 02-历史数据查询
- 1023. 组个最小数
- 【重要】2022年有三AI实战课程讲师招募,只等你来!
- python继承编程教程_Python实现通过继承覆盖方法示例
- idea编辑springboot,如何打成war包
- QT自定义饼图的外观
- Node — 第一天
- ubuntu安装transmission下载BT
- google linux桌面快捷方式,centos7 rhel7 linux下怎么安装google chrome 设置谷歌浏览器桌面快捷方式...
- 一点感悟: 詹姆斯与全栈工程师
- SpringBoot整合Tomcat中的组件
- 【4. 扫描节点】 分布式漏洞扫描系统设计与实现
- 【java】计算员工工资
- 计算机网络 5电路交换
- 通过路由器绕过DDoS防御攻击web服务器总结
- 移远之Quectel_QuecPython_EC600S 开发板小记(上)
- mysql游戏名称_MySQL 游戏排行榜
热门文章
- [洛谷P2584][ZJOI2006]GameZ游戏排名系统
- 黑苹果hd630显存7m_CLOVER引导的黑苹果显存增加至2048MB并修复某些花屏
- 本人二手图书资源淘宝店已经开张,欢迎选购
- Android中button setbackground setbackgroundColor方法问题
- mqttclient连接到OneNET云平台
- 易语言 设置屏幕刷新率 源码_iQOO Z1智能手机屏幕测评报告 「Soomal」
- 黑泽明和他的电影(七武士)
- 敬请加入 | Hey Google 智能家居虚拟峰会
- 大二上学期的学习感想
- 最新 Arduino 驱动 12接口/户外 LED显示屏/LED点阵屏/LED单元板