'返回'后不必要的'其他'.(无其他收益)

Dav*_*ton 8 javascript jquery ecmascript-6

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

'返回'后不必要的'其他'.(无其他收益)

} else {
Run Code Online (Sandbox Code Playgroud)

返回后我总是使用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;
Run Code Online (Sandbox Code Playgroud)

lla*_*ama 16

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

所以这:

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

return baz
Run Code Online (Sandbox Code Playgroud)

相当于:

if (condition) {
  return foo;
}

// do bar

return baz
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我认为@llama 的建议是正确的,尤其是当 if 块超过几行时。那么 else 条件真的可以帮助清晰。 (2认同)

Joh*_*edy 16

基本上说的是,如果部件中有a,则if语句的else部分是不必要returnif.像这样的东西是它所期望的:

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;
Run Code Online (Sandbox Code Playgroud)

在带有if语句的if之后,不需要else部分,因为return只有在满足条件时才会运行will 下面的代码.

  • 这完全是正确的方法。 (3认同)

jho*_*nec 10

虽然规则正确地指出该else块是不必要的,并且它是一种样式偏好,但我会添加额外的考虑因素以提高可读性,最重要的是可扫描性

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

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