ES15 中最具变革性的五个 JavaScript 特性

开发 前端
随着 ES15 和有前途的提案的推出,JS 功能有了全新的升级。从复杂的异步功能到语法数组糖和现代正则表达式,JavaScript 编码变得比以往任何时候都更容易、更快捷。

随着 ES15 和有前途的提案的推出,JS 功能有了全新的升级。从复杂的异步功能到语法数组糖和现代正则表达式,JavaScript 编码变得比以往任何时候都更容易、更快捷。

1. 原生数组分组功能现已推出

Object.groupBy():

从字面上理解,这是让dinosaur Lodash 存活下来的唯一东西 — — 不再存在了!

我原本期望有一个新的实例方法,如 Array.prototype.groupBy,但不知出于什么原因,他们把它变成了静态的。

然后我们用 Map.groupBy 来用对象键进行分组:

不过,几乎没有人会以这种方式对数组进行分组,因此这种做法可能不那么受欢迎。

2. 从外部解决承诺 — 现代方式

使用 Promise.withResolvers()。

从外部解决承诺很普遍,以前我们必须使用 Deferred 类来完成此操作:

或者从 NPM 安装 — — 还有一个依赖项!

但是现在有了 ES15 中的 Promise.withResolvers():

看看我如何快速承诺事件流 — — 等待可观察的:

3. 缓冲区性能升级

缓冲区是用于存储应用生成的临时数据的微型数据存储。

它们使在管道中跨各个阶段传输和处理数据变得非常容易。

管道如下:

文件处理:输入文件 → 缓冲区 → 处理 → 新缓冲区 → 输出文件

视频流:网络响应 → 缓冲区 → 显示视频帧

餐厅排队:接待顾客 → 排队/缓冲 → 服务顾客

使用缓冲区,每个阶段以不同的速度独立处理数据。

但是,当通过管道的数据超过缓冲区容量时会发生什么?

以前我们必须将当前数据的所有缓冲区复制到更大的缓冲区。

这对性能影响很大,尤其是当管道中有大量数据时。

ES15 为我们提供了解决此问题的方法:可调整大小的数组缓冲区。

4. 异步升级

Atomics.waitAsync():ES2024 中另一个强大的异步编码功能:

当 2 个代理共享一个缓冲区时……

代理 1“休眠”并等待代理 2 完成任务。

当代理 2 完成后,它会使用共享缓冲区作为通道进行通知。

如果您认为这与普通的 async/await 类似,那您就完全正确了。

但最大的区别在于:这两个代理可以存在于完全不同的代码上下文中 — 它们只需要访问同一个缓冲区。

并且:多个代理可以在不同时间访问或等待共享缓冲区 — 其中任何一个都可以通知“唤醒”所有其他代理。

它就像一个 P2P 网络;async/await 就像客户端-服务器请求-响应。

5. 正则表达式与标志和集合操作

一项全新功能,使正则表达式更加简洁直观。

使用富有表现力的模式查找和操作复杂字符串 — 借助集合操作:

匹配不断增加的 Unicode 字符集,例如:

表情符号:😀、❤️、👍、🎉 等。

重音字母:é、à、ö、ñ 等。

符号和非拉丁字符:©、®、€、£、µ、¥ 等

因此,我们在这里使用 Unicode 正则表达式和 v 标志来匹配所有希腊字母:

写在最后的想法

总体而言,这对于 JavaScript 来说是一次重大飞跃,具有现代开发所必需的几项功能。

帮助您编写更简洁、更具表现力和更清晰的更干净的代码。

责任编辑:华轩 来源: web前端开发
相关推荐

2024-06-14 10:22:55

2024-07-17 13:43:04

2024-08-01 08:38:59

2024-08-12 08:36:28

2024-07-30 08:40:00

2024-07-25 08:37:48

2024-08-16 09:14:53

2024-08-05 08:38:13

2024-07-02 08:36:09

JavaScriptUnicode模式

2024-02-19 10:15:37

JavaScript正则表达式ECMAScript

2024-08-19 08:35:11

2019-01-23 09:15:30

物联网IOT技术

2024-11-26 08:20:53

程序数据归档库

2022-09-30 14:00:50

JavaScrip新特性代码

2024-01-11 12:17:28

Linux系统命令

2022-08-05 13:14:25

ES2022JavaScript代码

2024-07-31 08:38:36

2015-07-29 10:46:20

Java错误

2012-07-17 11:04:04

Office 15

2022-12-25 16:03:31

JavaScript技巧
点赞
收藏

51CTO技术栈公众号