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"*/
var a = ;
const foo = ;
let d =
;
class Foo {
a = ;
}
a = ;
Примеры правильного кода для этого правила:
Открыть в Playground
/*eslint no-multi-assign: "error"*/
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": Если установлено значение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