eslint/no-multi-assign Style ​
What it does ​
Disallow use of chained assignment expressions.
Why is this bad? ​
Chaining the assignment of variables can lead to unexpected results and be difficult to read.
js
(function () {
const foo = (bar = 0); // Did you mean `foo = bar == 0`?
bar = 1; // This will not fail since `bar` is not constant.
})();
console.log(bar); // This will output 1 since `bar` is not scoped.
Examples ​
Examples of incorrect code for this rule:
js
var a = (b = c = 5);
const foo = (bar = "baz");
let d = (e = f);
class Foo {
a = (b = 10);
}
a = b = "quux";
Examples of correct code for this rule:
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";
Options ​
This rule has an object option:
"ignoreNonDeclaration"
: When set totrue
, the rule allows chains that don't include initializing a variable in a declaration or initializing a class field. Default isfalse
.
ignoreNonDeclaration ​
Examples of correct code for the { "ignoreNonDeclaration": true }
option:
js
let a;
let b;
a = b = "baz";
const x = {};
const y = {};
x.one = y.one = 1;
Examples of incorrect code for the { "ignoreNonDeclaration": true }
option:
js
let a = (b = "baz");
const foo = (bar = 1);
class Foo {
a = (b = 10);
}
How to use ​
To enable this rule in the CLI or using the config file, you can use:
bash
oxlint --deny no-multi-assign
json
{
"rules": {
"no-multi-assign": "error"
}
}