no-else-return
Disallow else blocks after return statements in if statements
            Some problems reported by this rule are automatically fixable by the --fix command line option
        
This rule is currently frozen and is not accepting feature requests.
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;
    }
}
Rule Details
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 ifs, all of them containing a return statement.
Examples of incorrect code for this rule:
/*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 
}
Examples of correct code for this rule:
/*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
  }
}
Options
allowElseIf
This rule has an object option:
- allowElseIf: true(default) - If true, allows- else ifblocks after a- return
Examples of correct code for the default {"allowElseIf": true} option:
/*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";
    }
}
Examples of incorrect code for the {"allowElseIf": false} option:
/*eslint no-else-return: ["error", {allowElseIf: false}]*/
function foo() {
    if (error) {
        return 'It failed';
    } else 
}
Examples of correct code for the {"allowElseIf": false} option:
/*eslint no-else-return: ["error", {allowElseIf: false}]*/
function foo() {
    if (error) {
        return 'It failed';
    }
    if (loading) {
        return "It's still loading";
    }
}
Version
This rule was introduced in ESLint v0.0.9.