
- Javascript 基礎教程
- Javascript - 首頁
- JavaScript - 路線圖
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 啟用
- JavaScript - 位置
- JavaScript - 語法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 註釋
- JavaScript - 變數
- JavaScript - let 語句
- JavaScript - 常量
- JavaScript - 資料型別
- JavaScript - 型別轉換
- JavaScript - 嚴格模式
- JavaScript - 保留關鍵字
- JavaScript 運算子
- JavaScript - 運算子
- JavaScript - 算術運算子
- JavaScript - 比較運算子
- JavaScript - 邏輯運算子
- JavaScript - 位運算子
- JavaScript - 賦值運算子
- JavaScript - 條件運算子
- JavaScript - typeof 運算子
- JavaScript - 空值合併運算子
- JavaScript - delete 運算子
- JavaScript - 逗號運算子
- JavaScript - 分組運算子
- JavaScript - yield 運算子
- JavaScript - 展開運算子
- JavaScript - 指數運算子
- JavaScript - 運算子優先順序
- JavaScript 控制流
- JavaScript - if...else
- JavaScript - while 迴圈
- JavaScript - for 迴圈
- JavaScript - for...in
- Javascript - for...of
- JavaScript - 迴圈控制
- JavaScript - break 語句
- JavaScript - continue 語句
- JavaScript - switch case
- JavaScript - 使用者自定義迭代器
- JavaScript 函式
- JavaScript - 函式
- JavaScript - 函式表示式
- JavaScript - 函式引數
- JavaScript - 預設引數
- JavaScript - Function() 建構函式
- JavaScript - 函式提升
- JavaScript - 自執行函式
- JavaScript - 箭頭函式
- JavaScript - 函式呼叫
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 閉包
- JavaScript - 變數作用域
- JavaScript - 全域性變數
- JavaScript - 智慧函式引數
- JavaScript 物件
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - String
- JavaScript - Array
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - Set
- JavaScript - WeakSet
- JavaScript - Map
- JavaScript - WeakMap
- JavaScript - 可迭代物件
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 標籤模板
- 面向物件 JavaScript
- JavaScript - 物件
- JavaScript - 類
- JavaScript - 物件屬性
- JavaScript - 物件方法
- JavaScript - 靜態方法
- JavaScript - 顯示物件
- JavaScript - 物件訪問器
- JavaScript - 物件建構函式
- JavaScript - 原生原型
- JavaScript - ES5 物件方法
- JavaScript - 封裝
- JavaScript - 繼承
- JavaScript - 抽象
- JavaScript - 多型
- JavaScript - 解構賦值
- JavaScript - 物件解構
- JavaScript - 陣列解構
- JavaScript - 巢狀解構
- JavaScript - 可選鏈
- JavaScript - 全域性物件
- JavaScript - Mixins
- JavaScript - 代理 (Proxies)
- JavaScript 版本
- JavaScript - 歷史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 非同步程式設計
- JavaScript - 非同步程式設計
- JavaScript - 回撥函式
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任務
- JavaScript - Promise 化
- JavaScript - Promise 鏈式呼叫
- JavaScript - 定時事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 屬性
- JavaScript - 刪除 Cookie
- JavaScript 瀏覽器 BOM
- JavaScript - 瀏覽器物件模型
- JavaScript - Window 物件
- JavaScript - Document 物件
- JavaScript - Screen 物件
- JavaScript - History 物件
- JavaScript - Navigator 物件
- JavaScript - Location 物件
- JavaScript - Console 物件
- JavaScript Web APIs
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 滑鼠事件
- JavaScript - 鍵盤事件
- JavaScript - 表單事件
- JavaScript - Window/Document 事件
- JavaScript - 事件委託
- JavaScript - 事件冒泡
- JavaScript - 事件捕獲
- JavaScript - 自定義事件
- JavaScript 錯誤處理
- JavaScript - 錯誤處理
- JavaScript - try...catch
- JavaScript - 除錯
- JavaScript - 自定義錯誤
- JavaScript - 擴充套件錯誤
- JavaScript 重要關鍵字
- JavaScript - this 關鍵字
- JavaScript - void 關鍵字
- JavaScript - new 關鍵字
- JavaScript - var 關鍵字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和屬性
- JavaScript - DOM Document
- JavaScript - DOM 元素
- JavaScript - DOM 屬性 (Attr)
- JavaScript - DOM 表單
- JavaScript - 修改 HTML
- JavaScript - 修改 CSS
- JavaScript - DOM 動畫
- JavaScript - DOM 導航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 其他
- JavaScript - Ajax
- JavaScript - 非同步迭代
- JavaScript - Atomics 物件
- JavaScript - rest 引數
- JavaScript - 頁面重定向
- JavaScript - 對話方塊
- JavaScript - 頁面列印
- JavaScript - 驗證
- JavaScript - 動畫
- JavaScript - 多媒體
- JavaScript - 圖片地圖
- JavaScript - 瀏覽器
- JavaScript - JSON
- JavaScript - 多行字串
- JavaScript - 日期格式
- JavaScript - 獲取日期方法
- JavaScript - 設定日期方法
- JavaScript - 模組
- JavaScript - 動態匯入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 淺複製
- JavaScript - 呼叫棧
- JavaScript - 引用型別
- JavaScript - IndexedDB
- JavaScript - 點選劫持攻擊
- JavaScript - 柯里化
- JavaScript - 圖形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 效能
- JavaScript - 樣式指南
JavaScript - ECMAScript 2021
ECMAScript 2021標準於2021年釋出。ECMAScript 2021為JavaScript帶來了許多顯著特性。String replaceAll()方法的引入簡化了全域性字串替換。邏輯賦值運算子(&&=、||=和??=)增強了程式碼簡潔性。此更新側重於提高開發人員的生產力和程式碼可讀性。
本章將討論ECMAScript 2021中新增的所有功能。
ECMAScript 2021 中新增的功能
以下是新增到 ECMAScript 2021 版本 JavaScript 中的新方法、功能等。
- 數字分隔符 (_)
- Promise any() 方法
- String replaceAll() 方法
- 邏輯與賦值運算子 (&&=)
- 邏輯或賦值運算子 (||=)
- 空值合併賦值運算子 (??=)
這裡,我們詳細解釋了每個功能。
數字分隔符 (_)
ECMAScript 2021 引入了數字分隔符。數字分隔符用於使數字更易於閱讀。
示例
我們在下面的程式碼中添加了數字分隔符,以使數字更易於閱讀。
<html> <body> <div id = "output">The value of the num is: </div> <script> let num = 90_00_000; document.getElementById("output").innerHTML += num; </script> </body> </html>
輸出
The value of the num is: 9000000
Promise any() 方法
ECMAScript 2021 引入了 Promise any() 方法。promise.any() 方法會從 Promise 陣列中返回最先完成的已完成的 Promise。
示例
在下面的程式碼中,我們建立了多個 Promise 並將其作為 Promise.any() 方法的引數傳遞。
我們已完成 promise1 並拒絕了 promise2。對於 Promise.any() 方法,JavaScript 控制流進入 then() 塊,因為 promise1 已完成。
<html> <body> <div id = "demo"> </div> <script> const output = document.getElementById("demo"); const promise1 = new Promise((res, rej) => res()); const promise2 = new Promise((res, rej) => rej()); const promises = [promise1, promise2]; Promise.any(promises) .then(() => { output.innerHTML += 'One or more promises are resolved!'; }) .catch((err) => { output.innerHTML += 'All promises are rejected:' + err; }); </script> </body> </html>
輸出
One or more promises are resolved!
String replaceAll() 方法
ECMAScript 2021 為字串引入了 String replaceAll() 方法。string replaceAll() 方法用於將特定子字串替換為另一個子字串。
replaceAll() 方法採用字串或正則表示式作為引數。
示例
在下面的程式碼中,我們使用 replaceAll() 方法將小寫“a”替換為大寫“A”。
<html> <body> <div id = "output1">Original string is: </div> <div id = "output2">Updated string is: </div> <script> let str = "abcd abcd abcd abcd"; document.getElementById("output1").innerHTML += str; let updatedStr = str.replaceAll("a", "A"); document.getElementById("output2").innerHTML += updatedStr; </script> </body> </html>
輸出
Original string is: abcd abcd abcd abcd Updated string is: Abcd Abcd Abcd Abcd
邏輯與賦值運算子 (&&=) 運算子
ECMAScript 2021 向運算子引入了邏輯賦值運算子 (&&=、||= 和 ??=) 。JavaScript 邏輯與賦值運算子會在第一個運算元為真時,用第二個運算元更新第一個運算元的值。
示例
在下面的程式碼中,str 字串的值不是虛值。因此,它會用“Hi”更新 str 變數的值。
<html> <body> <div id = "output">The value of the str is: </div> <script> let str = "Hello"; str &&= "Hi"; document.getElementById("output").innerHTML += str; </script> </body> </html>
輸出
The value of the str is: Hi
邏輯或賦值運算子 (||=) 運算子
ECMAScript 2021 向運算子引入了邏輯或賦值運算子。如果第一個運算元為假,它會用第二個運算元更新第一個運算元的值。
示例
在下面的程式碼中,str 的初始值為 false。因此,邏輯或賦值運算子將其值更新為第二個運算元,即 10。
<html> <body> <div id = "output">The value of the str is: </div> <script> let str = false; str ||= 10; document.getElementById("output").innerHTML += str; </script> </body> </html>
輸出
The value of the str is: 10
空值合併賦值 (??=) 運算子
ECMAScript 2021 向運算子中引入了空值合併賦值運算子。如果左運算元的值未定義或為 null,則此運算子會更新其值。
示例
在下面的程式碼中,str 變數的值為 null。因此,空值合併賦值運算子將 'default' 值賦給 str 變數。
<html> <body> <div id = "output">The value of the str is: </div> <script> let str = null; str ??= "default"; document.getElementById("output").innerHTML += str; </script> </body> </html>
輸出
The value of the str is: default
警告 – 以上某些功能不受某些瀏覽器的支援。因此,您可以使用 polyfill 來避免錯誤。