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
var x;
if () {
var b = 1;
}
// Practical example that is similar to an error
var setHeight = function (someNode) {
do {
someNode.height = "100px";
} while ();
}
Примеры корректного кода для этого правила с параметром по умолчанию "except-parens".
/*eslint no-cond-assign: "error"*/
// Assignment replaced by comparison
var x;
if (x === 0) {
var b = 1;
}
// Practical example that wraps the assignment in parentheses
var setHeight = function (someNode) {
do {
someNode.height = "100px";
} while ((someNode = someNode.parentNode));
}
// Practical example that wraps the assignment and tests for 'null'
var setHeight = function (someNode) {
do {
someNode.height = "100px";
} while ((someNode = someNode.parentNode) !== null);
}
always
Примеры некорректного кода для этого правила с параметром "always".
/*eslint no-cond-assign: ["error", "always"]*/
// Unintentional assignment
var x;
if () {
var b = 1;
}
// Practical example that is similar to an error
var setHeight = function (someNode) {
do {
someNode.height = "100px";
} while ();
}
// Practical example that wraps the assignment in parentheses
var setHeight = function (someNode) {
do {
someNode.height = "100px";
} while (());
}
// Practical example that wraps the assignment and tests for 'null'
var setHeight = function (someNode) {
do {
someNode.height = "100px";
} while (() !== null);
}
Примеры корректного кода для этого правила с параметром "always".
/*eslint no-cond-assign: ["error", "always"]*/
// Assignment replaced by comparison
var x;
if (x === 0) {
var 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