版本

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 中引入。

资源

更改语言