我正在使用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;
答案 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子句,因为根本不需要它。我认为最好了解幕后情况以及最佳做法背后的原因,而不仅仅是遵循这些做法。