ES 2021 来了,详细解读5个新特性,附案例
ES 2021是世界上最受欢迎的编程语言的最新版本〜
本次迭代中包含了五个新特性,让我们来一睹为快。
1.全部替换replaceAll:
js默认的replace 方法仅替换字符串中一个模式的第一个实例,要全局替换,你需要自己写正则,因此2021带来了全新的replaceAll方法。
'Hello'.replaceAll('l', 'L') // 'HeLLo'
2。 Promise.any
这是Promise全局对象的静态方法,可以放Promise 数组,只要有一个Promise完成解析,就短路返回一个值。如果所有的 promise 都被拒绝,那么它将抛出一个汇总错误消息)。
示例:短路返回
Promise.any([
new Promise((resolve, reject) => setTimeout(reject, 200, 'Third')),
new Promise((resolve, reject) => setTimeout(resolve, 1000, 'Second')),
new Promise((resolve, reject) => setTimeout(resolve, 2000, 'First')),
])
.then(value => console.log(`Result: ${value}`))
.catch (err => console.log(err))
/**** Output ****/
// Result: Second
示例:错误处理
Promise.any([
new Promise((resolve, reject) => setTimeout(reject, 200, 'Third')),
new Promise((resolve, reject) => setTimeout(resolve, 1000, 'Second')),
new Promise((resolve, reject) => setTimeout(resolve, 2000, 'First')),
])
.then(value => console.log(`Result: ${value}`))
.catch (err => console.log(err))
/**** Output ****/
// Result: Second
如果您使用过Promise.all,则在何时解决和何时拒绝方面基本上是相反的。
3 WeakRef弱引用
这是一个新类,用于创建对对象的弱引用,即不会阻止被引用对象被垃圾收集的引用,Java中有类似的实现。
let obj = { name: "Andy" }
const myRef = new WeakRef(obj)
然后,您可以像这样获取包装的对象:
myRef.deref() // { name: "Andy" }
如果垃圾收集器已经将其从内存中删除,它将返回undefined。
4.逻辑运算符与赋值表达式
在 JavaScript 中有许多赋值运算符和逻辑运算符,例如:
// Assignment Operator Example
let num = 5
num+=10
console.log(num) // 15
// Logical Operator Example
let num1 = 6
let num2 = 3
console.log(num1 === 6 && num2 === 2) // false
console.log(num1 === 6 || num2 === 2) // true
ES2021 让我们将能把逻辑运算符和赋值运算符结合起来。
他们看起来像这样:
a ||= b
a &&= b
a ??= b
这里解释下第一个的工作原理,你基本上可以猜出其他两个的工作原理。
a ||= b
// 等价于
// 1. a || (a = b)
// 2. if (!a) a = b
类似的a &&= b等价于if(a) { a = b; }
num1 ??= num2等价于num1 ?? (num1 = num2)
5.数值分隔符
新引入的数值分隔符使用 _(下划线)字符,在数值组之间提供分隔,使数值读起来更容易。
看这个:
let num = 1000000000
是十亿还是一亿?
现在在ES 2021中,您可以改为编写以下代码:
let num = 1_000_000_000
现在,这看起来像十亿。
感谢您的认真阅读。
如果你觉得有帮助,欢迎点赞支持!
不定期分享软件开发经验,欢迎关注,一起交流软件开发
ES 2021 来了,详细解读5个新特性,附案例的更多相关文章
- 深入解读MySQL8.0 新特性 :Crash Safe DDL
前言 在MySQL8.0之前的版本中,由于架构的原因,mysql在server层使用统一的frm文件来存储表元数据信息,这个信息能够被不同的存储引擎识别.而实际上innodb本身也存储有元数据信息.这 ...
- MemCache超详细解读
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- MemCache超详细解读 图
http://www.cnblogs.com/xrq730/p/4948707.html MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于 ...
- rpm软件包管理的详细解读
CentOS系统上使用rpm命令管理程序包:安装.卸载.升级.查询.校验.数据库维护 1.基本安装 rpm -ivh PackageFile 2.rpm选项 rpm -ivh --test Packa ...
- MemCache详细解读
MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...
- Android BLE蓝牙详细解读
代码地址如下:http://www.demodashi.com/demo/15062.html 随着物联网时代的到来,越来越多的智能硬件设备开始流行起来,比如智能手环.心率检测仪.以及各式各样的智能家 ...
- 为你详细解读HTTP请求头的具体含意
当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看 ...
- 详细解读Volley(三)—— ImageLoader & NetworkImageView
ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码中没有提供磁盘缓存的设置,所以咱们还需要去源码中进行修改,让我们可以更加自如的设定是否进行磁盘 ...
- 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块
详细解读Python的web.py框架下的application.py模块 这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...
随机推荐
- Astra示例程序库正式上线啦
新上线的Astra示例程序库提供了基于多种编程语言和框架使用Astra的例子.借助这个示例程序库,你可以在短时间内建构起数据库.创建多个表.装载示例数据并部署基于Cassandra的应用程序. 什么是 ...
- HBase内存配置及JVM优化
前言 本文从HBase的内存布局说起,先充分了解HBase的内存区的使用与分配,随后给出了不同业务场景下的读写内存分配规划,并指导如何分析业务的内存使用情况,以及在使用当中写内存Memstore及读内 ...
- IntelliJ IDEA错误: 源值1.5已过时,将在未来所有版本中删除
参考:http://www.jianshu.com/p/451271c4de11
- device_create为何可以在/sys/class/具体类/属性文件?怎么实现的
答案: 版本3.6.9: device_create -> device_register -> device_add -> device_add_attrs -> devic ...
- CTF:从0到1 -> zero2one
本篇blog首发0xffff论坛(CTF:从0到1->zero2one - 0xFFFF),中间有各位大佬补充,搬到了个人博客CTF:从0到1 -> zero2one | c10udlnk ...
- Java学习日报7.15
package oddor;import java.util.Scanner;public class Oddor{ public static void main(String args[]) { ...
- java线程调度
JAVA线程调度分抢占式和协调式 协调式的线程切换由线程本身自己控制,好处是实现简单,当前线程只有当事情做完才会通知系统进行切换并没有同步开销,坏处是容易引发事故,假如阻塞的线程由于代码BUG没有通知 ...
- reactor模式前序:传统IO的WEB服务器设计
先看一段经典的WEB JAVA服务器设计 JAVA代码为(伪代码) 1 ServerSocket serverSocket = ...; 2 serverSocket.bind(8899); 3 4 ...
- JVM笔记——类加载
1.在java代码中,类型(如class enum interface)的加载.连接.初始化过程都是在程序运行期完成的.这个特性,使得本为静态语言的java,拥有了动态语言的某些特征 加载:查找并加载 ...
- WebService的开发手段
一.WebService的开发手段 目前有关webService的开发手段有2种 1.JDK开发(jdk必须是1.6及以上版本,因为jdk是在1.6版本中引入并支持webservice开发的); 2. ...