跳到內容

eslint/no-else-return 吹毛求疵

🛠️ 此規則的部分違規情況可自動修復。

作用

if 語句中,禁止在 return 語句後使用 else 區塊

為什麼這是不好的?

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

javascript
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

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

javascript
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;
  }
}

此規則的正確程式碼範例

javascript
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

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

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

此規則的正確程式碼範例

javascript
function foo() {
  if (error) {
    return "It failed";
  }

  if (loading) {
    return "It's still loading";
  }
}

參考

以 MIT 授權條款發佈。