本系列文章經過重新編排和擴充,已出書為ECMAScript關鍵30天。原始文章因當時準備時程緊迫,多少有些許錯誤。為了避免造成讀者的困擾,以及配合書籍的內容規劃,將會陸續更新本系列文章。
本篇文章在 2021/11/2 已更新。
String.prototype.replaceAll(target,replacer)
透過找到所有匹配傳入的正規表達式或是文字內容target
,並且取代為傳入的字串,或是自訂取代行為的replacer
。
'寂寞的人被給予了思念就會顯得更寂寞'.replaceAll('寂寞', '孤單');
// 孤單的人被給予了思念就會顯得更孤單
lyrics.replaceAll(/apple/, 'pineapple');
// error: String.prototype.replaceAll called...
lyrics.replaceAll(/apple/gi, 'pineapple');
// "I have a pen. I have an pineapple. Ah, pineapple pen."
Promise.any(promises)
只要有一個非同步操作將狀態轉為settled
,而且操作成功,就能透過resolve
函式的呼叫,將結果狀態傳遞到then
方法的回呼函式執行。如果都失敗,則執行catch
方法的回呼函式,並且接收固定的錯誤訊息。
const p1 = new Promise((resolve, reject) => setTimeout(resolve, 200, 'p1'));
const p2 = new Promise((resolve, reject) => setTimeout(resolve, 300, 'p2'));
const p3 = new Promise((resolve, reject) => setTimeout(reject, 100, 'p3'));
Promise.any([p1, p2, p3])
.then((result) => console.log('then:', result))
.catch((error) => console.error('catch:', error));
// then: p1
_
為了方便閱讀位數很長的數字或bigint
數值,可以使用多個底線(_
)隔在數字之間。
let x = 2_3333_3333;