ES 2021 來了,詳細解讀5個新特性,附案例
- 2021 年 1 月 29 日
- 筆記
- javascript, 前端開發
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
現在,這看起來像十億。
感謝您的認真閱讀。
如果你覺得有幫助,歡迎點贊支援!
不定期分享軟體開發經驗,歡迎關注,一起交流軟體開發