Spec-Zone.ru › ESLint

no-else-return

Запрещает блоки else после операторов return в операторах if

🔧 Можно исправить

Некоторые проблемы, о которых сообщает это правило, можно исправить автоматически с помощью параметра командной строки --fix

❄️ Заморожено

Это правило в настоящее время заморожено, и запросы на добавление функций не принимаются.

Если блок if содержит оператор return, блок else становится ненужным. Его содержимое можно разместить за пределами блока.

function foo() {
    if (x) {
        return y;
    } else {
        return z;
    }
}

Подробности правила

Это правило предназначено для выявления ненужного блока кода после if, содержащего оператор return. Поэтому оно выдаст предупреждение, если встретит else после цепочки if, каждый из которых содержит оператор return.

Примеры неправильного кода для этого правила:

Открыть в Playground
/*eslint no-else-return: "error"*/

function foo1() {
    if (x) {
        return y;
    } else {return z;}
}

function foo2() {
    if (x) {
        return y;
    } else {const t ="foo";}
}

function foo3() {
    if (error) {
        return 'It failed';
    } else {if(loading){return"It's still loading";}}
}

// Two warnings for nested occurrences
function foo4() {
    if (x) {
        if (y) {
            return y;
        } else {return x;}
    } else {return z;}
}

Примеры правильного кода для этого правила:

Открыть в Playground
/*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} по умолчанию:

Открыть в Playground
/*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}:

Открыть в Playground
/*eslint no-else-return: ["error", {allowElseIf: false}]*/

function foo() {
    if (error) {
        return 'It failed';
    } else if(loading){return"It's still loading";}
}

Примеры правильного кода для параметра {"allowElseIf": false}:

Открыть в Playground
/*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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API