ES10 Cheat Sheet:离线存储、WebAssembly 和更多

前端技术日新月异,最新的 ES10 标准增加了一些非常有用的功能。在本文中,我们将详细介绍这些新功能,并提供示例代码来帮助您理解它们。我们将探讨以下几个主题:

  1. Array.prototype.flat()Array.prototype.flatMap()
  2. 改进的正则表达式功能
  3. String.prototype.trimStart()String.prototype.trimEnd()
  4. Object.fromEntries()
  5. Symbol.prototype.description
  6. Promise.allSettled()
  7. globalThis
  8. catch 绑定
  9. 改进的 JSON.stringify()
  10. BigInt
  11. WebAssembly
  12. 离线存储

1. Array.prototype.flat() 和 Array.prototype.flatMap()

新的 Array.prototype.flat() 方法可以将嵌套数组“平展”,即将嵌套的数组拍平成一个新数组。

----- --- - --- -- --- ----
----- --------- - -----------
----------------------- -- --- -- -- --

Array.prototype.flatMap() 方法与之类似,不同之处在于它可以在拍平嵌套数组之后,对每个元素应用一个映射函数(即可对拍平后的数组进行一些操作)。

----- --- - --- -- ---
----- ------------------ - ------------- -- -- - ----
-------------------------------- -- --- -- --

2. 改进的正则表达式功能

ES10 引入了一些新的正则表达式功能,包括“非捕获组”和“后行断言”。

“非捕获组”允许您对正则表达式的某个部分进行分组,但不会在匹配结果中显示该组:

----- ----- - -------------
---------------------------------- -- ----
------------------------------- -- -----

“后行断言”允许您在匹配某个字符串的后面添加一些限制条件:

----- ----- - --------------
---------------------------------- -- ----
---------------------------------- -- -----

3. String.prototype.trimStart() 和 String.prototype.trimEnd()

String.prototype.trimStart()String.prototype.trimEnd() 方法可以分别用于删除字符串开头和结尾的空格字符。

----- --- - -   ----- -----   --
----------------------------- -- ------ -----   -
--------------------------- -- -   ----- ------

4. Object.fromEntries()

Object.fromEntries() 方法允许您将一个由键值对数组组成的数组转换为对象。

----- ------- - -------- --- ------- ----
----- --- - ----------------------------
----------------- -- - ---- -- ---- - -

5. Symbol.prototype.description

Symbol.prototype.description 允许您获取符号的描述字符串。

----- --- - --------------
----------------------------- -- -----

6. Promise.allSettled()

Promise.allSettled() 方法可以等待所有传递的 promise 完成,并返回结果数组。与 Promise.all() 不同,Promise.allSettled() 会等待所有 promise 解决(不管是解决还是拒绝),返回一个由对象组成的数组,每个对象都有一个 status 字段和一个 valuereason 字段。

----- -------- - -
  -----------------------
  ----------------------
  -----------------------
--

---------------------------------------- -- ---------------------
-- -
 -   - ------- ------------ ------ ----- --
 -   - ------- ----------- ------- ----- --
 -   - ------- ------------ ------ ----- --
 - -
 --

7. globalThis

globalThis 始终指向全局对象,在浏览器环境中为 window,在 Node.js 环境中为 global。这个新特性可以使您编写跨平台代码更加简单。

--------------------------------- --- ------------ -- ----

8. catch 绑定

ES10 允许您在 catch 块中直接绑定错误对象,而不使用一个单独的 catch 语句来定义变量。

--- -
  ----- --- -------------
- ----- -- ------- -- -
  --------------------- -- -----
-

9. 改进的 JSON.stringify()

ES10 引入了一些新的选项和功能,可以更好地处理 BigInt、循环引用和日期对象。

----- --- - -
  ---- -----------
  ---- --- -------
--

------------------------------- ----- -- - --------------- ---- ----
--
 - -
 -   ------ -----
 -   ------ --------------------------
 - -
 --

10. BigInt

ES10 引入了一个新的原始类型 BigInt,用于表示任意精度的整数。可以使用字面值或 BigInt() 构造函数来创建 BigInt

----- --- - --------------------------------------------
----------------- -- ------------------------------------

11. WebAssembly

WebAssembly 是一种高性能的低级字节码格式,可以在 Web 上运行。ES10 引入了对 WebAssembly 的原生支持,允许您在 JavaScript 中使用 WebAssembly 模块。

------ -- -- -
  ----- ---------- - ----- -------------------------------------------------------
  ----- - -------- - --- - - - --------------------
  ------------------ ---- -- -
-----

12. 离线存储

Service Worker 是一种 Web Workers,它可以通过拦截网络请求并缓存响应来为 Web 应用程序提供离线存储和更好的性能。ES10 引入了对 Service Worker 的原生支持。

-- ------------------------- -
  -------------------------------------------
-

总结

ES10 引入了许多新功能,包括嵌套数组的拍平、正则表达式功能的改进、字符串的 trim 方法、对象键值对数组的转换、Promise.allSettled()、跨平台代码的 globalThis、错误绑定的 catch、JSON 序列化的改进、BigInt、WebAssembly 和离线存储。这些新特性使得 JavaScript 变得更加强大和灵活,为开发人员提供了更多的选择和可能性。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/645e2f80968c7c53b00948a6


猜你喜欢

  • 使用 Cypress 进行 Node.js 应用测试的实践

    传统的 Node.js 应用测试方式相对较为繁琐和复杂,需要使用多个测试框架以及手动编写各种测试用例。而 Cypress 则提供了一种简单易用的方式来进行 Node.js 应用的自动化测试。

    1 年前
  • Promise 注意事项及常见问题

    Promise 概述 Promise 是一种异步编程机制,它的主要作用是解决回调地狱问题。Promise 是由三种状态构成的:pending, resolved, rejected。

    1 年前
  • 深度解析 babel:编写自定义插件实战

    随着前端技术的不断发展,现代前端应用的规模和复杂程度越来越高。因此,编码效率和代码质量变得越来越重要。babel 是现代前端工程中必不可少的工具之一,它可以将 ES6/ES7 的最新语法转换成浏览器可...

    1 年前
  • React 单元测试教程 - Jest + Enzyme

    前言 随着前端技术的不断发展,现在的前端开发工具,比如 React、Vue、Angular 等,越来越注重测试。测试可以帮助开发者检测代码的健壮性和正确性,减少代码出错的概率。

    1 年前
  • 使用 NestJS 和 GraphQL 构建实时数据应用

    随着前端技术的飞速发展,构建实时数据应用越来越成为了前端开发者的必备技能。而使用 NestJS 和 GraphQL 结合的方式,可以让我们轻松地构建出高效、可扩展的实时数据应用,本文将会详细介绍如何使...

    1 年前
  • Angular 的通知:使用 Toast 和 Snackbar

    Angular 是现今最流行的前端框架之一,它提供了许多通知机制,例如 Toast 和 Snackbar,用于提示用户信息,帮助用户了解系统的状态。在本文中,我们将探讨 Angular 的通知功能,了...

    1 年前
  • Redis 消息队列实现方案详解

    前言 在前端开发中,我们经常需要处理异步任务,例如发送邮件、生成报表等等。而消息队列是一个广泛应用于异步任务处理的技术。在众多消息队列中,Redis 消息队列因其性能优异、易扩展等特点,成为了很多公司...

    1 年前
  • 如何使用 Server-sent Events 实现实时电子表格更新

    现代 Web 应用程序对实时性的要求越来越高,传统的轮询方式获取数据已经不能满足需求。Server-Sent Events 提供了一种简单的、基于 HTTP 的双向通信方式,能够实现服务器发送实时数据...

    1 年前
  • 使用 Docker Compose 部署 ELK 日志分析平台

    ELK 是一款非常流行的开源日志分析平台,由 Elasticsearch、Logstash 和 Kibana 三个开源项目组成,在日志处理、搜索和可视化方面具有优秀的表现。

    1 年前
  • 响应式设计中如何设置图片大小

    响应式设计是一种优化网站显示效果的方法,使得网站在不同的设备上都能够提供良好的用户体验。在响应式设计中,图片的大小设置是一个重要的问题。本文将介绍在响应式设计中如何设置图片的大小,并提供详细的代码示例...

    1 年前
  • 「ES12」中新增的 Export 语法糖

    在 ES12 中,新增了一种更简单易用的 Export 语法糖,它能够帮助开发者更加轻松地定义和导出模块,从而提高前端代码的可维护性。 在本文中,我们将深入探讨 ES12 中新增的 Export 语法...

    1 年前
  • CSS Reset 对表格样式的影响及其解决

    在前端开发中,CSS Reset(CSS 样式重置)是一个常见的技术,它可以帮助我们解决不同浏览器之间的 CSS 样式不一致的问题。但是在使用 CSS Reset 的过程中,可能会对表格样式产生影响,...

    1 年前
  • Fastify 中如何集成 SwaggerUI

    Fastify 中如何集成 SwaggerUI Fastify 是一个高效的 Node.js Web 框架,它提供了一个快速的路由器和中间件处理程序,用于构建高性能和可扩展的 Web 应用程序。

    1 年前
  • Tailwind CSS 中的常见 Margin 和 Padding 问题及解决方法

    前言 Tailwind CSS 是现在比较流行的前端 UI 库之一,它使用简单的类名来定义样式,使得快速开发变得更加容易。在 Tailwind CSS 中,margin 和 padding 是两个经常...

    1 年前
  • Serverless 应用如何处理跨站点请求伪造?

    跨站点请求伪造 (CSRF) 是一种网络攻击,通过伪造用户请求来达到不良目的。在 Serverless 应用中,这种攻击仍然是一个存在的威胁。本文将介绍什么是 CSRF 攻击、如何预防 CSRF 攻击...

    1 年前
  • RESTful API 中如何实现限流机制?

    随着移动互联网的发展和云计算技术的普及,RESTful API 已经成为现代分布式系统中不可或缺的一部分。然而,一些繁重的请求可能会损害系统的稳定性和可用性,因此限制每个用户在一定时间内最多可以请求多...

    1 年前
  • RxJS 中的实例操作符详解

    RxJS 是一款流行的响应式编程库,它提供了丰富的操作符来处理事件流。在 RxJS 中,实例操作符是一类针对 Observable 实例的操作符,它们可以用于组合、转换、筛选、限制等操作。

    1 年前
  • Socket.io 实现文件上传及下载的方案

    Socket.io 是一个实现了实时、双向、基于事件的通信的 JavaScript 库,它能在浏览器和服务器之间建立持久连接,允许双方实时地进行数据交换。在前端开发中,Socket.io 被广泛应用于...

    1 年前
  • 在 AngularJS 项目中使用 Chai.js 进行组件测试

    在 AngularJS 项目中使用 Chai.js 进行组件测试 在现代的 Web 开发中,前端工程化已经成为必不可少的一部分。而在前端编写软件的过程中,组件化是非常常见的一种设计模式。

    1 年前
  • ES7 中新增 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER

    在 ES6 中,JavaScript 已经实现了 Number 数据类型中的最大值和最小值,分别是 Number.MAX_VALUE(-1.7976931348623157e+308) 和 Numbe...

    1 年前

相关推荐

    暂无文章