【问题标题】:I delete " } else { } " but the code is still correct?我删除了“ } else { } ”,但代码仍然正确吗?
【发布时间】:2021-03-31 15:52:33
【问题描述】:
if (condition a) {
return (result b)
} else {
return (result c)
}
一旦我删除“ }else{ } 代码就变成了
if (condition a) {
return (result b)
}
return (result c)
为什么第二个代码仍然和第一个代码一样?
对我来说,在第二个中,它无论如何都会运行 return (result c) 但是,事实并非如此!
有什么说明吗?
【问题讨论】:
标签:
if-statement
return
conditional-statements
【解决方案1】:
考虑每个示例中发生的情况...
在第一个例子中:
- 如果
condition a 是true,则该块内的代码将被执行,返回result b 并退出函数。
- 如果条件不成立,则
else块内的代码将被执行,返回result c并退出函数。
在第二个例子中:
- 如果
condition a 是true,则该块内的代码将被执行,返回result b 并退出函数。
- 如果条件不成立,则控制将继续越过
if 块并执行下一个代码,返回result c 并退出函数。
从逻辑上讲,两者是相同的。在这种特定情况下,包括else 只是个人喜好问题。
对我来说,在第二个中,它无论如何都会运行 return (result c)
如果函数已经返回结果并退出,则不会。那么函数中剩余的代码就不执行了,因为已经返回了。
【解决方案2】:
在大多数语言中,return (something) 做了两件事:
- 定义当前函数/方法/的返回值...
- 结束当前函数/方法/...的控制流并返回给调用者。
第 2 项意味着即使没有 else,这两段代码的作用也基本相同:
由于if语句所保护的代码块永远不会正常完成,而是在执行if块时将不会执行的代码返回给调用者。