【问题标题】: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 atrue,则该块内的代码将被执行,返回result b 并退出函数。
    • 如果条件不成立,则else块内的代码将被执行,返回result c并退出函数。

    在第二个例子中:

    • 如果condition atrue,则该块内的代码将被执行,返回result b 并退出函数。
    • 如果条件不成立,则控制将继续越过if 块并执行下一个代码,返回result c 并退出函数。

    从逻辑上讲,两者是相同的。在这种特定情况下,包括else 只是个人喜好问题。

    对我来说,在第二个中,它无论如何都会运行 return (result c)

    如果函数已经返回结果并退出,则不会。那么函数中剩余的代码就不执行了,因为已经返回了。

    【讨论】:

      【解决方案2】:

      在大多数语言中,return (something) 做了两件事:

      1. 定义当前函数/方法/的返回值...
      2. 结束当前函数/方法/...的控制流并返回给调用者。

      第 2 项意味着即使没有 else,这两段代码的作用也基本相同:

      由于if语句所保护的代码块永远不会正常完成,而是在执行if块时将不会执行的代码返回给调用者。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多