ES 2021 来了,详细解读5个新特性,附案例
2021-01-29 18:22
976 查看
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
现在,这看起来像十亿。
感谢您的认真阅读。
如果你觉得有帮助,欢迎点赞支持!
不定期分享软件开发经验,欢迎关注,一起交流软件开发
相关文章推荐
- SparkCore:RDD特性详细解读
- 最小拍控制系统详细解读(阶跃输入+速度输入2个案例)【Simulink仿真】
- Kubernetes 已足够成熟?详细解读 1.15 新版本的多项关键特性 – 运维派
- 详细解读Windows8.1 Update中的WIMBoot新特性
- .NET Core 3.0 正式公布:新特性详细解读
- 详细解读给数据挖掘新手的6个案例
- 读《Java编程思想》笔记——解读Alan Kay提到的面向对象程序的5个特性
- Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇
- 支付宝小程序卡包开发(流程+详细案例+商户会员卡)
- web.xml详细解读(flex项目,框架:cairngorm--blazeDS--spring--ibatis)(正在编写中)
- Titlebarl的三种去除方式和requestwindowfeature,configchanges的详细解读
- maven setting详细解读
- Android事件机制详细解读
- Ehcache详细解读
- 字节流与字符流详细解读
- Spring整合Shiro做权限控制模块详细案例分析
- 剑指offer 反转链表超详细解读(感谢大雪菜学长讲课)
- 详细解读Python的web.py框架下的application.py模块
- Java final String类的详细用法还有特性说明,自己也在学习.
- 详细解读KMP模式匹配算法