本篇介紹 ES2021 (ES12) 提供的 Logical assignment operators ( &&=
、||=
和 ??=
)。
假設你要先用 &&
、||
或 ??
運算子檢查某個值是否合適,然後再進行賦值,常見的作法有以下幾種。
例如:nickName
是用來儲存使用者的暱稱,若沒有設定 nickName
,預設值為空字串,但顯示在 UI 上會顯示 Anonymous
,代表是否者未設定暱稱 (即匿名)。常見的作法會先用 ||
運算子
let nickName = '';
nickName = nickName || 'Anonymous';
console.log(nickName);
// Anonymous
另一個情境:有一個 text
變數,若沒有設定初始值時,會設為預設文字 default
。常見的作法會先用 ??
運算子 (或 ||
運算子,依情境而定) 檢查,然後再用 =
進行賦值:
let text;
text = text ?? 'default';
console.log(text);
// default
看起來沒什麼問題啊?但本篇要介紹的提案將以上寫法更簡化!把邏輯運算子和賦值表達式合在一起!
把某個運算子和賦值表達式合在一起其實很常見,例如:
let count = 0;
count += 66;
console.log(count);
// 66
count -= 10;
console.log(count);
// 56
count /= 4;
console.log(count);
// 14
count *= 2;
console.log(count);
// 28
所以將邏輯運算子和賦值表達式合在一起就是邏輯賦值運算子:&&=
、||=
和 ??=
。