版本

operator-assignment

在可能的情況下要求或禁止簡寫賦值運算符

🔧 可修正

此規則報告的某些問題可透過 --fix 命令列 選項自動修正

❄️ 已凍結

此規則目前為凍結狀態,不接受功能請求。

JavaScript 提供了簡寫運算符,將變數賦值和一些簡單的數學運算結合在一起。例如,x = x + 4 可以縮寫為 x += 4。支援的簡寫形式如下

 Shorthand | Separate
-----------|------------
 x += y    | x = x + y
 x -= y    | x = x - y
 x *= y    | x = x * y
 x /= y    | x = x / y
 x %= y    | x = x % y
 x **= y   | x = x ** y
 x <<= y   | x = x << y
 x >>= y   | x = x >> y
 x >>>= y  | x = x >>> y
 x &= y    | x = x & y
 x ^= y    | x = x ^ y
 x |= y    | x = x | y

規則詳細資訊

此規則在可能的情況下要求或禁止簡寫賦值運算符。

此規則適用於上表列出的運算符。它不會報告邏輯賦值運算符 &&=||=??=,因為它們的短路行為與其他賦值運算符不同。

選項

此規則有一個字串選項

  • "always" (預設) 在可能的情況下要求簡寫賦值運算符
  • "never" 禁止簡寫賦值運算符

always

以下是使用預設 "always" 選項時的不正確程式碼範例

在 Playground 中開啟
/*eslint operator-assignment: ["error", "always"]*/

x = x + y;
x = y * x;
x[0] = x[0] / y;
x.y = x.y << z;

以下是使用預設 "always" 選項時的正確程式碼範例

在 Playground 中開啟
/*eslint operator-assignment: ["error", "always"]*/

x = y;
x += y;
x = y * z;
x = (x * y) * z;
x[0] /= y;
x[foo()] = x[foo()] % 2;
x = y + x; // `+` is not always commutative (e.g. x = "abc")

never

以下是使用 "never" 選項時的不正確程式碼範例

在 Playground 中開啟
/*eslint operator-assignment: ["error", "never"]*/

x *= y;
x ^= (y + z) / foo();

以下是使用 "never" 選項時的正確程式碼範例

在 Playground 中開啟
/*eslint operator-assignment: ["error", "never"]*/

x = x + y;
x.y = x.y / a.b;

何時不應使用

使用運算符賦值簡寫是一種風格選擇。關閉此規則將允許開發人員根據具體情況選擇哪種風格更具可讀性。

版本

此規則在 ESLint v0.10.0 中引入。

資源

變更語言