The --fix
option on the command line can automatically fix some of the problems reported by this rule.
If an if
block contains a return
statement, the else
block becomes unnecessary. Its contents can be placed outside of the block.
function foo() { if (x) { return y; } else { return z; } }
This rule is aimed at highlighting an unnecessary block of code following an if
containing a return statement. As such, it will warn when it encounters an else
following a chain of if
s, all of them containing a return
statement.
This rule has an object option:
{ "no-else-return": ["error", { "allowElseIf": true }], // or "no-else-return": ["error", { "allowElseIf": false }] }
allowElseIf: true
(default) allows else if
blocks after a returnallowElseIf: false
disallows else if
blocks after a returnallowElseIf: true
Examples of incorrect code for this rule:
/*eslint no-else-return: "error"*/ function foo() { if (x) { return y; } else { return z; } } function foo() { if (x) { return y; } else if (z) { return w; } else { return t; } } function foo() { if (x) { return y; } else { var t = "foo"; } return t; } function foo() { if (error) { return 'It failed'; } else { if (loading) { return "It's still loading"; } } } // Two warnings for nested occurrences function foo() { if (x) { if (y) { return y; } else { return x; } } else { return z; } }
Examples of correct code for this rule:
/*eslint no-else-return: "error"*/ function foo() { if (x) { return y; } return z; } function foo() { if (x) { return y; } else if (z) { var t = "foo"; } else { return w; } } function foo() { if (x) { if (z) { return y; } } else { return z; } } function foo() { if (error) { return 'It failed'; } else if (loading) { return "It's still loading"; } }
allowElseIf: false
Examples of incorrect code for this rule:
/*eslint no-else-return: ["error", {allowElseIf: false}]*/ function foo() { if (error) { return 'It failed'; } else if (loading) { return "It's still loading"; } }
Examples of correct code for this rule:
/*eslint no-else-return: ["error", {allowElseIf: false}]*/ function foo() { if (error) { return 'It failed'; } if (loading) { return "It's still loading"; } }
This rule was introduced in ESLint 0.0.9.
© JS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/rules/no-else-return