• 热门专题

JavaScript 2018新增加功能详细介绍

作者:whl  发布日期:2018-11-20 08:33:00
  •   大家应该发现最近JavaScript 2018里都新增加了不少的功能,让我们使用起来变得更加方便了许多,这个功能就是异步生成器还有变得越来越好的正则表达式。小编特别查询了资料找出了许多的正则表达式来给大家分享,感兴趣的朋友赶紧来看看吧。

      “异步生成器和迭代器是将异步函数和迭代器结合起来的结果,所以它就像你可以在其中等待的异步生成器或你可以从中得到返回值的异步函数,”他解释道。以前,ECMAScript 允许你编写一个可以输入或等待但不能同时进行两者操作的函数。“这对于在 Web 平台占比越来越大的消费流来说非常方便,尤其是在 Fetch 对象公开流的情况下。”

      异步迭代器类似于 Observable 模式,但更灵活。“Observable 是推模型; 一旦你订阅了它,无论你是否准备好,你都会被爆炸式的事件和通知冲击,所以你必须实施缓冲或采样策略来处理干扰,”Terlson 解释道。异步迭代器是一种推拉模型 —— 你请求一个值后发送给你 —— 这对于诸如网络 IO 原语之类的东西更有效。

      Promise.prototype.finally 对异步编程也很有帮助,在一个 promise 状态变为 fulfilled 或 rejected 后,指定一个最终方法来进行清理。

      更多常规正则表达式功能

      Terlson 对正则表达式的改进感到特别兴奋(其中大部分工作都是由 V8 团队完成的,他们已经完成了这四个主要功能的早期实现),因为这是此语言落后的领域。

      “自从 JavaScript 诞生之日起,ECMAScript 正则表达式就没有过显著进步;几乎所有其他编程语言的正则表达式库都比 ECMAScript 的功能高级。“ECMAScript 6 包含了一些小的更新,但他将 ECMAScript 2018 视为“第一次明显改变你如何编写正则表达式的更新”。

      dotAll 标志使点字符匹配所有字符,而不再会对匹配一些换行符(比如 n 或 f )无效。“你不能使用点字符,除非你处于多行模式并且你不关心每行的结束,”他指出。这方面的变通办法创造了一些不必要的复杂的正则表达式,Terlson 期望“每个人都能在正则表达式中使用该模式”。

      命名捕获组与许多其他语言中的命名组类似,你可以在命名正则表达式匹配的字符串中的不同部分,并将其视为对象。“这几乎等同于在你的正则表达式中添加注释,通过赋予它一个名字来解释该组试图捕捉的内容,”他解释道。“这个模式的一部分是月份,这是出生日期……这对于未来其他人维护你的模式真的很有帮助。”

      以前 ECMAScript 有先行断言但没有后行断言。“人们使用了一些技巧,比如反转字符串,然后进行匹配,或一些其他 hacks,”Terlson 指出。这对于查找和替换的正则表达式特别有用。“你看到的并没有成为你匹配的一部分,所以如果你要替换前后任何一边有美元符号的数字,你就可以做到这一点而无需做额外的工作将美元符号重新放回去。”ECMAScript 后行断言允许像 C# 中那样的可变长度的后行断言,而不仅仅是 Perl 中的固定长度模式。

      特别是对于需要支持国际用户的开发人员,允许在正则表达式中使用 Unicode 属性转义 \\p{…} 和 \\P{…} 将使创建 Unicode 可识别的正则表达式变得更加容易。目前,这对开发人员来说是件很麻烦的事。

      还有一些新的国际化 API,用于本地化的日期和时间格式,欧元货币格式和复数形式,这样可以更轻松地执行本地化标签和按钮等操作。

      ECMAScript 2018 扩展了对象和数组对 rest 和 spread 模式的支持(在 React 生态系统中很常见,许多开发人员都没有意识到它还没有完全标准化),Terlson 称之为有超大影响的小功能。rest 和 spread 对于复制和克隆对象很有用,例如,如果你有一个不可变的结构,而你要更改除一个属性之外的所有内容,或者你想复制一个对象但添加一个额外的属性。Terlson 指出,这种模式经常用于为选项记录分配默认值。“对于你一直在做的事情来说,这是一个非常好的语法模式。”

      Babel 和 TypeScript 等转换器已经支持 ECMAScript 2018 的许多功能。浏览器支持也将随着时间的推移实现,并且所有新功能都已经在 Chrome 的发布版本中(要获得完整的支持矩阵图表,请查看 ECMAScript 兼容性表)。

     ECMAScript 兼容性表

      看了上文的介绍大家对于异步生成器还有正则表达式是不是都有了更加深入的了解,其实大家只要细心观察就会发现这两个新功能对于我们的帮助是非常巨大的。如果大家对于上面所分享的内容还有什么不明白的地方可以给小编留言,小编会第一时间回复大家的。

延伸阅读:

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规