不必要的'其他'在'返回'。 (无其他收益)

时间:2017-10-22 14:50:05

标签: javascript jquery ecmascript-6

我正在使用es-lint清理代码中的错误。我遇到过这个错误:

  

不必要的'否则'在'返回'。 (无其他的退还)

} else {

我在返回后总是使用else语句。有什么我可能会忽略的吗?

   if (cctot <= 3 && cctot > 0) {
      alert('Credit under $3.00 not allowed');
      return Number.MIN_SAFE_INTEGER; // important to return 0 so we can check for these conditions for validation
    } else {
      cctot *= -1;
    }
  }
  return precise(cctot);
}
module.exports = calculateCredit;

4 个答案:

答案 0 :(得分:11)

这是一种代码风格偏好。您不需要else,而是可以将else代码直接放在if下方。这是因为如果if成功,那就是函数的结束,所以无论如何都不会到达else代码。

所以这个:

if (condition) {
  return foo;
} else {
  // do bar
}

return baz

相当于:

if (condition) {
  return foo;
}

// do bar

return baz

这种风格在不同的编程社区中似乎有所不同。开发人员几乎总是省略else,而我看到更多的JS开发人员包括它。

虽然我更愿意放弃else,但这纯粹是一个偏好问题。不要让它太担心你。人们可能会对这类事情采取教条,但实际上并不那么重要。

答案 1 :(得分:11)

基本上说的是,如果return部分中有if,则if语句的else部分是不必要的。 这样的事情就是它所期望的:

if (cctot <= 3 && cctot > 0) {
      alert('Credit under $3.00 not allowed');
      return Number.MIN_SAFE_INTEGER; // important to return 0 so we can check for these conditions for validation
}
cctot *= -1;

在使用return语句的if之后,不需要else部分,因为if下面的代码只会在未满足条件时运行。

答案 2 :(得分:4)

虽然规则正确地指出 else 块是不必要的,而且它是一种样式偏好,但我会为可读性和最重要的可扫描性添加其他注意事项强>.

对于编写此代码的开发人员以及对其进行解释的机器,它可能是一个样式点,仅此而已。但对于需要修复错误、增强功能、进行代码审查等的开发人员而言,快速浏览代码并查看 else 块的能力有助于识别逻辑分支。

在几行孤立的代码中很容易看出其意图,但在数百行具有 if else 块的代码中,可以作为有用的标识符,就像其他常见的视觉实践一样缩进、换行和命名约定。

答案 3 :(得分:0)

return语句停止/终止当前函数。只是说不需要“ else”,因为该函数的执行已经停止,并且如果“ if”条件不成功,它将在其下运行任何代码。

关于最佳实践,我不会说总是很重要,但是对于您示例中的代码,我不会使用else子句,因为根本不需要它。我认为最好了解幕后情况以及最佳做法背后的原因,而不仅仅是遵循这些做法。