以下是您提供的文本的繁體中文翻譯:
# JavaScript - ECMAScript 2021:初學者指南
你好,未來的編程超新星!我很興奮能成為您進入ECMAScript 2021世界的導師。作為一位具有多年經驗的計算機科學老師,我見過無數學生從完全的初學者變成自信的程序员。今天,我們將探索JavaScript的最新功能,我答應讓這一切盡可能有趣且容易理解。所以,拿起你喜歡的飲料,放鬆一下,讓我們一起深入探討!
## ECMAScript 2021是什麼?
在我們深入了解新功能之前,讓我們先快速了解一下ECMAScript是什麼。把ECMAScript想成是JavaScript的菜譜書。每年,廚師們(也就是語言開發者)都會添加新的菜譜(功能),讓我們的編碼生活更加輕鬆和美味。ECMAScript 2021,也被稱為ES12,是這本菜譜書的最新版。
## ECMAScript 2021新增的功能
ECMAScript 2021為我們提供了一些令人興奮的新工具來玩。這就像拿到了一套閃亮的新樂高積木來添加到我們的收藏中。讓我們一一探索這些新功能。
### 數字分隔符 (_)
你有沒有嘗試過閱讀一個非常長的數字,比如1000000000?這有點頭痛,對吧?現在,數字分隔符來拯救我們了!
```javascript
// 沒有數字分隔符
const billion = 1000000000;
// 有數字分隔符
const billionReadable = 1_000_000_000;
console.log(billion === billionReadable); // 輸出:true
在1_000_000_000
中的下劃線(_)不會改變數字的值。它只是在那裡幫助我們這些人類閱讀。這不是很棒嗎?這就像在長句子中添加空格來使其更易於閱讀。
Promise any() 方法
JavaScript中的Promise就像同時打很多電話並等待有人接聽。Promise.any()
方法是處理多個Promise的新方法。
const promise1 = new Promise((resolve, reject) => setTimeout(reject, 100, 'promise1'));
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 200, 'promise2'));
const promise3 = new Promise((resolve, reject) => setTimeout(resolve, 300, 'promise3'));
Promise.any([promise1, promise2, promise3])
.then((value) => console.log(value))
.catch((error) => console.log(error));
// 輸出:promise2
在這個例子中,Promise.any()
在数组中的任何一个Promise被滿足時就會解析。這就像一場比賽,我們只關心第一個衝過終點線的人,無論第二或第三名是誰。
String replaceAll() 方法
你有沒有玩過文字替換遊戲?replaceAll()
方法就像是這樣,但是對於JavaScript中的字符串。
const sentence = "我喜歡貓。貓是偉大的寵物。";
const newSentence = sentence.replaceAll("貓", "狗");
console.log(newSentence); // 輸出: "我喜歡狗。狗是偉大的寵物。"
在replaceAll()
之前,我們必須使用正則表達式或循環來替換子字符串的所有出現。現在,只需調用一個方法就可以了!
邏輯賦值運算符
ECMAScript 2021引入了三個新的邏輯賦值運算符。這些就像是JavaScript中常見模式的簡寫形式。讓我們看看每一個:
邏輯AND賦值(&&=)運算符
let x = 1;
let y = 2;
x &&= y;
console.log(x); // 輸出:2
// 這等價於:
// x && (x = y);
&&=
運算符只在左值為真時賦予右值。這就像說,“如果x是真,那麼讓它等於y。”
邏輯OR賦值(||=)運算符
let a = null;
let b = '默認值';
a ||= b;
console.log(a); // 輸出:"默認值"
// 這等價於:
// a || (a = b);
||=
運算符只在左值為假時賦予右值。這對於設置默認值來說非常完美!
空值合并賦值(??=)運算符
let foo = null;
let bar = 'baz';
foo ??= bar;
console.log(foo); // 輸出:"baz"
// 這等價於:
// foo ?? (foo = bar);
??=
運算符只在左值為null或undefined時賦予右值。它與||=
相似,但對“空”的定義更加專門。
方法總結
這裡有一個方便的表格,總結了我們學到的新的方法:
方法 | 描述 | 示例 |
---|---|---|
數字分隔符 | 讓大數字更易於閱讀 | 1_000_000_000 |
Promise.any() | 當数组中的任何Promise滿足時解析 | Promise.any([promise1, promise2, promise3]) |
String.replaceAll() | 替換字符串中的所有出現 | "hello hello".replaceAll("hello", "hi") |
&&= | 如果左邊是真則賦值 | x &&= y |
||= | 如果左邊是假則賦值 | x \|\|= y |
??= | 如果左邊是null或undefined則賦值 | x ??= y |
好了,各位!我們已經一起探索了ECMAScript 2021的令人興奮的新功能。記住,學習編程最好的方式是實踐。所以,我鼓勵你們去玩這些新功能,嘗試,最重要的是,玩得開心!
正如我以前的編程教授常說的,“編程就像烹飪。起初你可能會燒焦一些菜,但隨著練習,你很快就能創作出傑作!”所以不要害怕犯錯誤——它們都是學習過程的一部分。
持續編碼,保持好奇心,並且學習愉快!
Credits: Image by storyset