Skip to content
← Back to rules

eslint/no-multi-assign Style

它的作用

禁止使用链式赋值表达式。

为什么这不好?

变量的链式赋值可能导致意外结果,而且难以阅读。

js
(function () {
  const foo = (bar = 0); // 你是想写成 `foo = bar == 0` 吗?
  bar = 1; // 这不会失败,因为 `bar` 不是常量。
})();
console.log(bar); // 这将输出 1,因为 `bar` 不在作用域内。

示例

以下是此规则的错误代码示例:

js
var a = (b = c = 5);

const foo = (bar = "baz");

let d = (e = f);

class Foo {
  a = (b = 10);
}

a = b = "quux";

以下是此规则的正确代码示例:

js
var a = 5;
var b = 5;
var c = 5;

const foo = "baz";
const bar = "baz";

let d = c;
let e = c;

class Foo {
  a = 10;
  b = 10;
}

a = "quux";
b = "quux";

配置

此规则接受一个包含以下属性的配置对象:

ignoreNonDeclaration

type: boolean

default: false

当设置为 true 时,该规则允许不包括在声明中初始化变量或初始化类字段的链式赋值。

以下是当此选项设置为 true 时的正确代码示例:

js
let a;
let b;
a = b = "baz";

const x = {};
const y = {};
x.one = y.one = 1;

以下是当此选项设置为 true 时的错误代码示例:

js
let a = (b = "baz");

const foo = (bar = 1);

class Foo {
  a = (b = 10);
}

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "no-multi-assign": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "no-multi-assign": "error",
  },
});
bash
oxlint --deny no-multi-assign

版本

此规则于 v0.15.4 中添加。

参考资料