JavaScript 一直在不断改进和添加更多新功能。TC39 已经完成,并批准了 ES2019 的 8 项新功能。这个过程包含了 5 个阶段:
第 0 阶段:稻草人
第 1 阶段:提案
第 2 阶段:草案
第 3 阶段:候选
第 4 阶段:已完成/已批准
第 0 阶段的提案:
https://github.com/tc39/proposals/blob/master/stage-0-proposals.md
第 1 至 3 阶段的提案:
https://github.com/tc39/proposals
第 4 阶段的提案:
https://github.com/tc39/proposals/blob/master/finished-proposals.md
废话不多说,接下来让我们来逐一介绍这些功能。
1.可选的 catch 绑定
可选的 catch 绑定提案是为了能够选择性地移除使用不到的 catch 绑定。
现在可以删除使用不到的绑定。
2.JSON 超集
这个提案的目的是让 JSON 字符串可以包含未转义的 U+2028 LINE SEPARATOR 和 U+2029 PARAGRAPH SEPARATOR 字符,而 ECMAScript 字符串是不能包含这些字符的。在 ES2019 生效之前,这样做会出现“SyntaxError: Invalid or unexpected token”错误。
3.符号描述
符号是在 ES2015 中引入的,具有非常独特的功能。在 ES2019 中可以提供给定的描述,目的是避免间接从 Symbol.prototype.toString 获取描述。
4.修订版的 Function.prototype.toString
之前的函数原型已经有 toString 方法,但是在 ES2019 中,它经过了修订,可以包含函数内的注释,不过不适应于箭头函数。
5.Object.fromEntries
它是 Object.entries 方法的反向操作,可用于克隆对象。
不过需要注意的是,嵌入式对象/数组都只是引用。
6.格式化的 JSON.stringify
这个提案是由同一个人提出来的,与 JSON 超集有关。ES2019 将使用 JSON 转义序列表示输出结果,而不是返回 UTF-16 代码单元。
7.String.prototype 的 trimStart 和 trimEnd
String 原型已经有了 trim 方法,用来移除字符串开头和结尾的空格。而 ES2019 引入了 trimStart 和 trimEnd。
8.Array.prototype 的 flat 和 flatMap
flat 方法通过将所有子数组元素以递归方式连接到指定的深度来创建数组。默认深度为 1,使数组的第一层嵌套展平。
flatMap 方法类似于 flat,并且还与 map 相关,它会先映射数组然后将其展平。
其他
我还想强调一下现在处在第 3 阶段的一些有用的特性。
英文原文:https://codedam.com/8-new-features-javascript-es2019/
更多内容,请关注前端之巅。
会议推荐
2019 年 6 月,GMTC 全球大前端技术大会 2019 即将到来。小程序、Flutter、移动 AI、工程化、性能优化…大前端的下一站在哪里?点击下图了解更多详情。
评论 1 条评论