JavaScript ES12新特性有哪些

  介绍

这篇文章主要介绍了JavaScript ES12新特性有哪些,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

而每年,JavaScript都会更新添加新的特性新标准,在今年ES2020发布了,而ES2020 (ES12)也预计将在明年即2021年年中发布。每年的新特性都会经历四个阶段,而第四阶段也就是最后一个阶段,本文即将介绍的即提案4中的相关新特性,也是意味着这些新特性将很大程度的出现在下一个版本中

特性抢先知:

    <李> String.prototype。李replaceAll新增replaceAll李 <>的承诺。李李任何 <> WeakRefs李 <李>逻辑运算符和赋值表达式 <李>数字分隔符号

replaceAll

看到 replaceAll 这个词,相比很容易联想到 替换。在JavaScript中,取代方法只能是替换字符串中匹配到的第一个实例字符,而不能进行全局多项匹配替换,唯一的办法是通过正则表达式进行相关规则匹配替换

replaceAll 则是返回一个全新的字符串,所有符合匹配规则的字符都将被替换掉,替换规则可以是字符串或者正则表达式。

让字符串=& # 39;我喜欢前端,我喜欢前端公虾米& # 39;//使用replacelet replaceStr=. replace(& # 39;像# 39;& # 39;爱# 39;)console.log (replaceStr)//& # 39;我爱前端,我喜欢前端公虾米& # 39;//替换使用正则匹配所有console.log (. replace(/喜欢/g, & # 39;爱# 39;))//& # 39;我爱前端,我爱前端公虾米& # 39;//使用replaceAlllet replaceAllStr=string.replaceAll(& # 39;像# 39;& # 39;爱# 39;)console.log (replaceAllStr)//& # 39;我爱前端,我爱前端公虾米& # 39;复制代码

需要注意的是,replaceAll在使用正则表达式的时候,如果非全局匹配(/g),则replaceAll()会抛出一个异常

让字符串=& # 39;我喜欢前端,我喜欢前端公虾米& # 39;console.log (string.replaceAll(/喜欢/& # 39;爱# 39;))//TypeError复制代码

Promise.any

当列承诺表中的任意一个承诺成功解决则返回第一个解决的结果状态   如果所有的承诺均拒绝,则抛出异常表示所有请求失败

的承诺。任何([新的承诺((解决,拒绝)=比;setTimeout(500年拒绝,& # 39;哎呀,我被拒绝了& # 39;)),新的承诺((解决,拒绝)=比;setTimeout(1000年解决,& # 39;哎呀,她接受我了& # 39;)),新的承诺((解决,拒绝)=比;setTimeout(2000年解决,& # 39;哎呀,她也接受我了& # 39;)),   ])   不要犹豫(value=https://www.yisu.com/zixun/>控制台。日志(“输出结果:$ {value} '))   .catch(呃=> console.log (err))//输出//输出结果:哎呀,她接受我了复制代码

再来看下另一种情况

的承诺。任何([Promise.reject(& # 39;错误1 & # 39;),Promise.reject(& # 39;错误2 & # 39;),Promise.reject(& # 39;错误3 & # 39;)   ])   不要犹豫(value=https://www.yisu.com/zixun/>控制台。日志(“请求结果:$ {value} '))   .catch(呃=> console.log (err))//输出AggregateError:所有承诺都拒绝复制代码

Promise.any Promise.race 十分容易混淆,务必注意区分,承诺。种族一旦某个承诺触发了解决或者拒绝,就直接返回了该状态结果,并不在乎其成功或者失败

WeakRefs

使用WeakRefs的类类创建对对象的弱引用(对对象的弱引用是指当该对象应该被GC回收时不会阻止GC的回收行为)

当我们通过(const,让var)创建一个变量时,垃圾收集器GC将永远不会从内存中删除该变量,只要它的引用仍然存在可访问.WeakRef对象包含对对象的弱引用。对对象的弱引用是不会阻止垃圾收集器GC恢复该对象的引用,则GC可以在任何时候删除它。

WeakRefs在很多情况下都很有用,比如使用地图对象来实现具有很多需要大量内存的键值缓存,在这种情况下最方便的就是尽快释放键值对占用的内存。

目前,可以通过 WeakMap ()或者 WeakSet ()来使用 WeakRefs

举个栗子

我想要跟踪特定的对象调用某一特定方法的次数,超过1000条则做对应提示

让地图=new()函数doSomething (obj) {   …   }函数useObject (obj) {   doSomething (obj)   让叫=map.get (obj) | | 0   叫+ +      如果(called> 1000) {console.log(& # 39;当前调用次数已经超过1000次了,在# 39;)   }      地图。集(obj,称为)   }复制代码

JavaScript ES12新特性有哪些