跳至内容

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 语句。

选项 此规则具有一个对象选项

  • allowElseIftrue (默认)允许 return 语句之后的 else if
  • allowElseIffalse禁止 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 许可协议发布。