ECMAScript 2018
JavaScript 版本號
舊的 ECMAScript 版本使用數字命名:ES5 和 ES6。
從 2016 年起,版本按年份命名:ES2016、2018、2020……
ECMAScript 2018 中的新功能
本章介紹 ECMAScript 2018 中的新功能
JavaScript 非同步迭代
ECMAScript 2018 添加了非同步迭代器和可迭代物件。
使用非同步可迭代物件,我們可以在 for/of
迴圈中使用 await
關鍵字。
示例
for await () {}
自 2020 年 1 月以來,所有現代瀏覽器都支援 JavaScript 非同步迭代
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
2017 年 12 月 | 2020 年 1 月 | 2017 年 11 月 | 2017 年 9 月 | 2018 年 1 月 |
JavaScript Promise.finally
ECMAScript 2018 最終確定了 Promise 物件與 Promise.finally
的完整實現
示例
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
自 2018 年 11 月以來,所有現代瀏覽器都支援 Promise.finally
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
2017 年 12 月 | 2018 年 11 月 | 2018 年 1 月 | 2018 年 3 月 | 2018 年 1 月 |
JavaScript 物件剩餘屬性
ECMAScript 2018 添加了剩餘屬性。
這允許我們解構一個物件並將剩餘部分收集到一個新物件中
示例
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
自 2020 年 1 月以來,所有現代瀏覽器都支援物件剩餘屬性
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
2017 年 7 月 | 2020 年 1 月 | 2017 年 8 月 | 2018 年 3 月 | 2017 年 8 月 |
新的 JavaScript RegExp 功能
ECMAScript 2018 添加了 4 項新的 RegExp 功能
- Unicode 屬性轉義 (\p{...})
- 後行斷言 (?<= ) 和 (?
- 命名捕獲組
- s (dotAll) 標誌
自 2020 年 6 月以來,所有現代瀏覽器都支援新的 RegExp 功能
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
2018 年 1 月 | 2020 年 1 月 | 2020 年 6 月 | 2018 年 9 月 | 2018 年 2 月 |
JavaScript 執行緒
在 JavaScript 中,您可以使用 Web Workers API 建立執行緒。
Worker 執行緒用於在後臺執行程式碼,以便主程式可以繼續執行。
Worker 執行緒與主程式同時執行。程式的不同部分同時執行可以節省時間。
JavaScript 共享記憶體
共享記憶體是一項功能,允許執行緒(程式的不同部分)訪問和更新同一記憶體中的相同資料。
您不需要線上程之間傳遞資料,而是可以傳遞一個指向資料儲存位置的 SharedArrayBuffer 物件。
SharedArrayBuffer
SharedArrayBuffer 物件表示一個固定長度的原始二進位制資料緩衝區,類似於 ArrayBuffer 物件。