eslint/no-multi-assign 风格
它的作用
禁止使用链式赋值表达式。
为什么这是不好的?
链式赋值变量可能导致意外的结果,并且难以阅读。
js
(function () {
const foo = (bar = 0); // 你是不是想写 `foo = bar == 0`?
bar = 1; // 这不会报错,因为 `bar` 不是常量。
})();
console.log(bar); // 由于 `bar` 没有作用域限制,这将输出 1。示例
此规则的错误代码示例:
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);
}如何使用
要通过配置文件或 CLI 启用此规则,可以使用:
json
{
"rules": {
"no-multi-assign": "error"
}
}bash
oxlint --deny no-multi-assign