logical-assignment-operators
要求或禁止邏輯賦值運算子簡寫
ES2021 為邏輯運算子 ||
、&&
和 ??
引入了賦值運算子簡寫。之前,這僅允許用於數學運算,例如 +
或 *
(請參閱規則 operator-assignment)。如果賦值目標和邏輯表達式的左側表達式相同,則可以使用簡寫。例如,a = a || b
可以縮短為 a ||= b
。
規則詳情
此規則要求或禁止邏輯賦值運算子簡寫。
選項
此規則有一個字串和一個物件選項。字串選項
"always"
(預設值)"never"
物件選項 (僅當字串選項設定為 "always"
時才可用)
"enforceForIfStatements": false
(預設值) 不檢查等效的if
陳述式"enforceForIfStatements": true
檢查等效的if
陳述式
always
此選項會檢查可以使用邏輯賦值運算子縮短的表達式。例如,a = a || b
可以縮短為 a ||= b
。具有關聯性的表達式,例如 a = a || b || c
,會被報告為可以縮短為 a ||= b || c
,除非使用括號明確定義評估順序,例如 a = (a || b) || c
。
使用預設 "always"
選項時,此規則的錯誤程式碼範例
在遊樂場中開啟
/*eslint logical-assignment-operators: ["error", "always"]*/
使用預設 "always"
選項時,此規則的正確程式碼範例
在遊樂場中開啟
/*eslint logical-assignment-operators: ["error", "always"]*/
a = b
a += b
a ||= b
a = b || c
a || (b = c)
if (a) a = b
a = (a || b) || c
never
使用 "never"
選項時,此規則的錯誤程式碼範例
在遊樂場中開啟
/*eslint logical-assignment-operators: ["error", "never"]*/
使用 "never"
選項時,此規則的正確程式碼範例
在遊樂場中開啟
/*eslint logical-assignment-operators: ["error", "never"]*/
a = a || b
a = a && b
a = a ?? b
enforceForIfStatements
此選項會檢查使用 if 陳述式且可以使用邏輯賦值運算子表示的其他模式。
使用 ["always", { enforceForIfStatements: true }]
選項時,此規則的錯誤程式碼範例
在遊樂場中開啟
/*eslint logical-assignment-operators: ["error", "always", { enforceForIfStatements: true }]*/
// <=> a &&= b
// <=> a ||= b
// <=> a ??= b
// <=> a ??= b
使用 ["always", { enforceForIfStatements: true }]
選項時,此規則的正確程式碼範例
在遊樂場中開啟
/*eslint logical-assignment-operators: ["error", "always", { enforceForIfStatements: true }]*/
if (a) b = c
if (a === 0) a = b
何時不該使用它
使用邏輯運算子賦值簡寫是一種風格選擇。關閉此規則將允許開發人員根據具體情況選擇哪種風格更具可讀性。
版本
此規則在 ESLint v8.24.0 中引入。