2025最新!JS運算符全解析,一定有你不知道!
Hello,大家好,我是 Sunday。
最近看到一些同學有提到幾個比較特殊的運算符,比如:??=、?.、?: 等等。
其實在 JS 中提供的運算符是非常多的,除了以上說到的幾個之外,還有很多特殊的運算符。這些運算符可以幫助我們更靈活、簡潔地編寫代碼。
所以,咱們今天就一起來看看 JS 中的特殊運算符,從基礎到特殊,全方位了解它們的用法和實際應用場景!
1. 空值合并運算符 (??)
空值合并運算符 ?? 用于當左側值為 null 或 undefined 時,返回右側的值。這在需要設置默認值時非常方便。
示例:
let name = null;
let displayName = name ?? "Anonymous"; // 如果 name 是 null/undefined,則為 "Anonymous"
這個運算符能夠幫助我們避免 null 或 undefined 導致的錯誤,常用于設置默認值。
2. 可選鏈運算符 (?.)
可選鏈運算符 ?. 可以安全地訪問嵌套屬性,避免在屬性不存在時拋出錯誤。
示例:
let user = { name: "Alice" };
console.log(user?.address?.city); // 輸出 undefined 而不是拋出錯誤
這個運算符非常適合在 API 返回數(shù)據(jù)不完整、嵌套對象結構不固定的場景下使用。
3. 邏輯賦值運算符 (||=, &&=, ??=)
邏輯賦值運算符是一組可以在特定條件下賦值的運算符,包括 ||=, &&= 和 ??=。
示例:
let x = 0;
x ||= 10; // 當 x 是假值時賦值為 10
x &&= 5; // 當 x 是真值時賦值為 5
x ??= 1; // 當 x 是 null 或 undefined 時賦值為 1
這些運算符可以讓代碼更加簡潔,尤其是在條件賦值時非常實用。
4. 指數(shù)運算符 (**)
指數(shù)運算符 ** 用于計算冪值,類似于 Math.pow()。
示例:
let result = 2 ** 3; // 2 的 3 次冪,結果是 8
5. 三元運算符 (?:)
三元運算符 ?: 是一種簡潔的條件語句,適合在簡單條件判斷時使用。
示例:
let isActive = true;
let status = isActive ? "Active" : "Inactive"; // 根據(jù) isActive 的值選擇不同的狀態(tài)
三元運算符可以讓代碼更緊湊,但在條件較復雜時,建議還是使用 if 語句來保持代碼的可讀性。
6. 逗號運算符 (,)
逗號運算符允許我們在一行中執(zhí)行多個表達式,最終返回最后一個表達式的值。
示例:
let x = (1 + 2, 3 + 4); // 最終 x 為 7
7. void 運算符 (void)
void 運算符可以執(zhí)行表達式并返回 undefined。常用于立即執(zhí)行函數(shù)表達式(IIFE)中。
示例:
void function sayHello() { console.log("Hello"); }(); // 輸出 "Hello",返回 undefined
8. 類型運算符
- typeof:返回數(shù)據(jù)類型。
console.log(typeof "Hello"); // 輸出 "string"
- instanceof:檢查對象是否為某個構造函數(shù)的實例。
console.log([] instanceof Array); // 輸出 true
9. 展開運算符 (...)
展開運算符 ... 用于將數(shù)組或對象的所有元素展開,方便合并和復制。
示例:
let arr1 = [1, 2];
let arr2 = [...arr1, 3, 4]; // 合并數(shù)組
let obj = { ...{ a: 1 }, b: 2 }; // 合并對象
10. 解構賦值
解構賦值可以從數(shù)組或對象中提取值賦給變量,簡化賦值操作。
示例:
let [a, b] = [1, 2];
let { x, y } = { x: 10, y: 20 };
11. 位運算符
位運算符主要用于按位操作,包括 &、|、^、~、<<、>>、>>> 等。常用于優(yōu)化性能或特定算法。
示例:
let result = 5 & 1; // 按位與運算,結果是 1
12. new 運算符
new 運算符用于創(chuàng)建對象實例,是 JavaScript 面向對象編程中的基礎。
示例:
let date = new Date(); // 創(chuàng)建 Date 實例
13. delete 運算符
delete 用于刪除對象的屬性,刪除成功會返回 true。
示例:
let obj = { a: 1, b: 2 };
delete obj.a; // 刪除屬性 a
14. in 運算符
in 運算符檢查對象是否包含某個屬性,返回布爾值。
示例:
let obj = { a: 1 };
console.log("a" in obj); // 輸出 true