no-multi-assign
Запрещает использовать цепочки выражений присваивания
Цепочки присваивания переменных могут привести к неожиданным результатам и затруднить чтение кода.
(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.
Подробности правила
Это правило запрещает использовать несколько присваиваний в одном операторе.
Примеры неправильного кода для этого правила:
Открыть в Playground
/*eslint no-multi-assign: "error"*/
let a = ;
const foo = ;
let d =
;
class Foo {
a = ;
}
a = ;
Примеры правильного кода для этого правила:
Открыть в Playground
/*eslint no-multi-assign: "error"*/
let a = 5;
let b = 5;
const 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": Если задано значениеtrue, правило разрешает цепочки, которые не включают инициализацию переменной в объявлении или инициализацию поля класса. По умолчанию используется значениеfalse.
ignoreNonDeclaration
Примеры правильного кода для параметра { "ignoreNonDeclaration": true }:
Открыть в Playground
/*eslint no-multi-assign: ["error", { "ignoreNonDeclaration": true }]*/
let a;
let b;
a = b = "baz";
const x = {};
const y = {};
x.one = y.one = 1;
Примеры неправильного кода для параметра { "ignoreNonDeclaration": true }:
Открыть в Playground
/*eslint no-multi-assign: ["error", { "ignoreNonDeclaration": true }]*/
let a = ;
const foo = ;
class Foo {
a = ;
}
Связанные правила
Версия
Это правило появилось в ESLint v3.14.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-multi-assign