版本

no-else-return

禁止在 if 語句中 return 語句之後出現 else 區塊

🔧 可修正

此規則報告的一些問題可透過 --fix 命令列選項自動修正

如果 if 區塊包含 return 語句,則 else 區塊將變得不必要。其內容可以放置在區塊之外。

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

規則詳細資訊

此規則旨在突顯包含 return 語句的 if 之後不必要的程式碼區塊。 因此,當它遇到 if 鏈之後的 else 時,所有 if 都包含 return 語句時,它會發出警告。

選項

此規則具有物件選項

  • allowElseIf: true (預設)允許在 return 之後使用 else if 區塊
  • allowElseIf: false 禁止在 return 之後使用 else if 區塊

allowElseIf: true

此規則的不正確程式碼範例

在遊樂場中開啟
/*eslint no-else-return: "error"*/

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

function foo2() {
    if (x) {
        return y;
    } else if (z) {
        return w;
    } else {
        return t;
    }
}

function foo3() {
    if (x) {
        return y;
    } else {
        var t = "foo";
    }

    return t;
}

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

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

此規則的正確程式碼範例

在遊樂場中開啟
/*eslint no-else-return: "error"*/

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

    return z;
}

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

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

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

allowElseIf: false

此規則的不正確程式碼範例

在遊樂場中開啟
/*eslint no-else-return: ["error", {allowElseIf: false}]*/

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

此規則的正確程式碼範例

在遊樂場中開啟
/*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 中引入。

資源

變更語言