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) 特性相关推荐

  1. SQL Server 2019 新特性之 SQL Server大数据群集 介绍(一)

    SQL Server 2019 新特性之 SQL Server大数据群集 介绍(一) 从开始SQL Server 2019 预览,SQL Server 大数据群集允许你部署的 Kubernetes 上 ...

  2. 云世界,一切如梦幻,数据也玩虚拟化。 SQL Server 2019 新特性系列一:数据虚拟化

    SQL Server 2019 新特性系列一:数据虚拟化 最新更新 SQL Server已经到了CTP2.2版本,主要更新了如下功能: 大数据集群:在大数据群集上使用 azure 数据工作室中的 sp ...

  3. 新年新气象,从SQL Server 2019新特性开始!

    SQL Server 2019新特性开篇概述 2019年了,新年伊始,SQL Server 2019已经到CTP 2.1 ,一直没有认真的学习SQL Server 2019 ,既然是新年新气象,就从新 ...

  4. VisualStudio 2019 新特性

    很多小伙伴都好奇 VisualStudio 2019 有哪些功能,下面让我介绍一些好玩的特性 在安装完成之后会看到创新的欢迎界面,这个欢迎界面支持输入关键字搜项目,同时支持选择语言平台 很多小伙伴都说 ...

  5. ECMAScript 2019(ES10)新特性简介

    简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性. ES10引入了2大特性和4个小的特性,我们 ...

  6. ECMAScript 2019(ES10) 的新特性总结

    快速通道: ES6.ES7.ES8.ES9.ES10.ES11.ES12.ES13新特性大全 老规矩,先纵览下 ES2019 的新功能: Array.flat()和Array.flatMap():数组 ...

  7. 直播预告 - 微软MVP为你揭秘Visual Studio 2019新特性

    作为"宇宙第一IDE"的Visual Studio集成开发环境,已经经历了超过十几年的迭代成为一款功能丰富且高效的开发工具,微软自己给Visual Studio 的定位是 &quo ...

  8. ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13新特性大全

    本文是对 ES6 至 ES13 常用到的特性的总结,关于每个特性的详细内容,都有单独的文章进行详细讲述,可以跳转到具体文章进行学习查看.学习永无止境大家一起努力 . 文章为从新到旧的顺序. ECMAS ...

  9. SQL Server 2019 (15.x) 新特性概要

    2019.11.4 SQL Server 2019发布,趁热打铁了解下2019的新特性.下面整理一些个人感觉重要的或者工作上能用到的新特性,有删减,完整版参考 SQL Server 2019 中的新增 ...

最新文章

  1. 初次体验hiphop-php
  2. 网络编程(二)NSURLSessionConfiguration
  3. hibernate中的 bag
  4. day58-activiti 02-历史数据查询
  5. 1023. 组个最小数
  6. 【重要】2022年有三AI实战课程讲师招募,只等你来!
  7. python继承编程教程_Python实现通过继承覆盖方法示例
  8. idea编辑springboot,如何打成war包
  9. QT自定义饼图的外观
  10. Node — 第一天
  11. ubuntu安装transmission下载BT
  12. google linux桌面快捷方式,centos7 rhel7 linux下怎么安装google chrome 设置谷歌浏览器桌面快捷方式...
  13. 一点感悟: 詹姆斯与全栈工程师
  14. SpringBoot整合Tomcat中的组件
  15. 【4. 扫描节点】 分布式漏洞扫描系统设计与实现
  16. 【java】计算员工工资
  17. 计算机网络 5电路交换
  18. 通过路由器绕过DDoS防御攻击web服务器总结
  19. 移远之Quectel_QuecPython_EC600S 开发板小记(上)
  20. mysql游戏名称_MySQL 游戏排行榜

热门文章

  1. [洛谷P2584][ZJOI2006]GameZ游戏排名系统
  2. 黑苹果hd630显存7m_CLOVER引导的黑苹果显存增加至2048MB并修复某些花屏
  3. 本人二手图书资源淘宝店已经开张,欢迎选购
  4. Android中button setbackground setbackgroundColor方法问题
  5. mqttclient连接到OneNET云平台
  6. 易语言 设置屏幕刷新率 源码_iQOO Z1智能手机屏幕测评报告 「Soomal」
  7. 黑泽明和他的电影(七武士)
  8. 敬请加入 | Hey Google 智能家居虚拟峰会
  9. 大二上学期的学习感想
  10. 最新 Arduino 驱动 12接口/户外 LED显示屏/LED点阵屏/LED单元板