no-cond-assign
Запрещает операторы присваивания в условных выражениях
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
В условных операторах очень легко по ошибке написать оператор сравнения (например, ==) вместо оператора присваивания (например, =). Например:
// Check the user's job title
if (user.jobTitle = "manager") {
// user.jobTitle is now incorrect
}
Существуют веские причины использовать операторы присваивания в условных операторах. Однако бывает сложно понять, было ли конкретное присваивание намеренным.
Описание правила
Это правило запрещает неоднозначные операторы присваивания в условиях проверки операторов if, for, while и do...while.
Параметры
У этого правила есть строковый параметр:
-
"except-parens"(по умолчанию) разрешает присваивания в условиях проверки только в том случае, если они заключены в скобки (например, чтобы разрешить повторное присваивание переменной в условии циклаwhileилиdo...while). -
"always"запрещает все присваивания в условиях проверки.
except-parens
Примеры неправильного кода для этого правила с параметром "except-parens" по умолчанию:
/*eslint no-cond-assign: "error"*/
// Unintentional assignment
let x;
if () {
const b = 1;
}
// Practical example that is similar to an error
const setHeight = function (someNode) {
do {
someNode.height = "100px";
} while ();
}
Примеры правильного кода для этого правила с параметром "except-parens" по умолчанию:
/*eslint no-cond-assign: "error"*/
// Assignment replaced by comparison
let x;
if (x === 0) {
const b = 1;
}
// Practical example that wraps the assignment in parentheses
const setHeight = function (someNode) {
do {
someNode.height = "100px";
} while ((someNode = someNode.parentNode));
}
// Practical example that wraps the assignment and tests for 'null'
const set_height = function (someNode) {
do {
someNode.height = "100px";
} while ((someNode = someNode.parentNode) !== null);
}
always
Примеры неправильного кода для этого правила с параметром "always":
/*eslint no-cond-assign: ["error", "always"]*/
// Unintentional assignment
let x;
if () {
const b = 1;
}
// Practical example that is similar to an error
const setHeight = function (someNode) {
do {
someNode.height = "100px";
} while ();
}
// Practical example that wraps the assignment in parentheses
const set_height = function (someNode) {
do {
someNode.height = "100px";
} while (());
}
// Practical example that wraps the assignment and tests for 'null'
const heightSetter = function (someNode) {
do {
someNode.height = "100px";
} while (() !== null);
}
Примеры правильного кода для этого правила с параметром "always":
/*eslint no-cond-assign: ["error", "always"]*/
// Assignment replaced by comparison
let x;
if (x === 0) {
const b = 1;
}
Связанные правила
Версия
Это правило появилось в ESLint v0.0.9.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-cond-assign