网站首页 > 基础教程 正文
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
现在,这看起来像十亿。
感谢您的认真阅读。
如果你觉得有帮助,欢迎点赞支持!
不定期分享软件开发经验,欢迎关注,一起交流软件开发
猜你喜欢
- 2024-11-01 Axure教程:高保真的上传效果 axure高保真原型图
- 2024-11-01 从 ES2021 到 ES2023 的 13 个实用的 JavaScript 新功能
- 2024-11-01 替换代码的情况下不停机!这操作可能工作6年的Java程序员都不会
- 2024-11-01 Javascript常用工具类 js工具库排行
- 2024-11-01 我的JavaScript成长之路——看似简单
- 2024-11-01 Spring boot 自定义集成阿里巴巴Druid
- 2024-11-01 该了解的10个 JS 小技巧 js怎么学扎实
- 2024-11-01 别客气,11种在教程中难以找到的JavaScript技巧,请收下
- 2024-11-01 三十分钟快速搭建serverless网盘服务
- 2024-11-01 ECMAScript 2021(ES12)新特性简介
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)