我经常想知道允许顺序执行来确定返回值和终止点是否不好。 EG(这是围绕IF语句的问题,因此请忽略以下事实:有许多更好的方法可以执行此简单功能!):
ssl
相同的效果,比以下的效果更小,但可读性更低:
function isGreaterthanTen(val) {
if(val > 10) return true;
return false;
}
那么,在明智和/或明智的最佳实践中,一个比另一个更好吗?
答案 0 :(得分:2)
您应该避免编写所谓的意大利面条代码。这意味着,一个人应该能够阅读您的代码,而不必从一个地方跳到另一个地方来解开并理解它。在代码中间包含return语句可以被视为意大利面条式代码,尤其是在较长的函数中。
我更喜欢使用一个返回语句来返回一个变量,该变量在函数顶部声明并在整个执行过程中进行操作。
function isGreaterthanTen(val) {
let isGreater = false;
if (val > 10) {
isGreater = true;
}
return isGreater;
}
当然,该功能可以简化为:
function isGreaterthanTen(val) {
return val > 10;
}
在验证数据并阻止执行时,该函数的顶部是该规则允许的一个例外:
function isGreaterthanTen(val) {
if (typeof val !== 'number')
return;
return val > 10;
}
如果参数不是数字,则填充不返回任何内容。
答案 1 :(得分:1)
在我目前的工作中,潜在客户永远不建议在没有括号的情况下建议使用单行执行,而readability
则没有括号。
if(true) {
return 'good practice'
}
if(true)
return 'bad practice'
我始终遵循的另一个相关点是首先检查negative
的值
if(false) {
return 'this is the negative case'
}
return 'case for most of the positive case'
但是我知道处理这种单行returns
如果仅boolean
,则可以简单地返回条件
function foo(){
return 1 === 1
}
console.log(foo())
如果您的值被视为真实或虚假而非布尔值,则可以仅对boolean
值使用强制值
function foo() {
return !!1 // 1 treated as true
}
console.log(foo())
如果要返回两个不同的值,那么您可能也使用三进制。
function foo() {
const me = 'satyam',
friend = 'jack',
satyamAge = 23
return satyamAge === 20 ? me : friend
}
console.log(foo())