no-else-return
Запрещает блоки else после операторов return в операторах if
Некоторые проблемы, о которых сообщает это правило, можно исправить автоматически с помощью параметра командной строки --fix
Это правило в настоящее время заморожено, и запросы на добавление функций не принимаются.
Если блок if содержит оператор return, блок else становится ненужным. Его содержимое можно разместить за пределами блока.
function foo() {
if (x) {
return y;
} else {
return z;
}
}
Подробности правила
Это правило предназначено для выявления ненужного блока кода после if, содержащего оператор return. Поэтому оно выдаст предупреждение, если встретит else после цепочки if, каждый из которых содержит оператор return.
Примеры неправильного кода для этого правила:
/*eslint no-else-return: "error"*/
function foo1() {
if (x) {
return y;
} else
}
function foo2() {
if (x) {
return y;
} else
}
function foo3() {
if (error) {
return 'It failed';
} else
}
// Two warnings for nested occurrences
function foo4() {
if (x) {
if (y) {
return y;
} else
} else
}
Примеры правильного кода для этого правила:
/*eslint no-else-return: "error"*/
function foo1() {
if (x) {
return y;
}
return z;
}
function foo2() {
if (x) {
return y;
}
const t = "foo";
}
function foo3() {
if (error) {
return 'It failed';
}
if (loading) {
return "It's still loading";
}
}
function foo4() {
if (x) {
if (y) {
return y;
}
return x;
}
return z;
}
function foo5() {
if (x) {
const t = "foo";
} else {
return y
}
}
Параметры
allowElseIf
У этого правила есть параметр-объект:
-
allowElseIf: true(по умолчанию) — если значение true, разрешает блокиelse ifпослеreturn
Примеры правильного кода для параметра {"allowElseIf": true} по умолчанию:
/*eslint no-else-return: ["error", {allowElseIf: true}]*/
function foo() {
if (error) {
return 'It failed';
} else if (loading) {
return "It's still loading";
}
}
// Using multiple `if` statements instead of `else if` is also allowed
function foo2() {
if (error) {
return 'It failed';
}
if (loading) {
return "It's still loading";
}
}
Примеры неправильного кода для параметра {"allowElseIf": false}:
/*eslint no-else-return: ["error", {allowElseIf: false}]*/
function foo() {
if (error) {
return 'It failed';
} else
}
Примеры правильного кода для параметра {"allowElseIf": false}:
/*eslint no-else-return: ["error", {allowElseIf: false}]*/
function foo() {
if (error) {
return 'It failed';
}
if (loading) {
return "It's still loading";
}
}
Версия
Это правило появилось в ESLint v0.0.9.
Материалы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-else-return