Disallow if as the Only Statement in an else Block (no-lonely-if)

If an if statement is the only statement in the else block of a parent if statement, it is often clearer to combine the two to using else if form.

if (foo) {
    // ...
} else {
    if (bar) {
        // ...
    }
}

should be rewritten as

if (foo) {
    // ...
} else if (bar) {
    // ...
}

Rule Details

This rule warns when an if statement’s else block contains only another if statement.

The following patterns are considered problems:

/*eslint no-lonely-if: 2*/

if (condition) {
    // ...
} else {
    if (anotherCondition) { /*error Unexpected if as the only statement in an else block.*/
        // ...
    }
}

if (condition) {
    // ...
} else {
    if (anotherCondition) { /*error Unexpected if as the only statement in an else block.*/
        // ...
    } else {
        // ...
    }
}

The following patterns are not considered problems:

/*eslint no-lonely-if: 2*/

if (condition) {
    // ...
} else if (anotherCondition) {
    // ...
}

if (condition) {
    // ...
} else if (anotherCondition) {
    // ...
} else {
    // ...
}

if (condition) {
    // ...
} else {
    if (anotherCondition) {
        // ...
    }
    doSomething();
}

When Not To Use It

Disable this rule if the code is clearer without requiring the else if form.

Version

This rule was introduced in ESLint 0.6.0.

Resources