如果"如果"以回归结束?

时间:2015-06-27 14:24:17

标签: javascript if-statement return

在JavaScript中,有一个由if语句组成的函数,而if语句最终以return语句结束,是否必需添加else语句为好?举例说明:



function is_fruit(boolean) {
    var banana = boolean,
        str = "I am fruit.";

    if (banana) return str;
    return str.replace("fruit","Groot");
}

alert(is_fruit(false));




在上面的例子中,我们首先检查boolean是否设置为true。如果是,我们只返回var str(并且考虑到我们正在使用return,这就是函数的结尾!)。但是,当banana不为true时,我们跳过if语句并执行函数的其余部分 - 在这种情况下是另一个返回函数。

在实践中,这可以重写为:



function is_fruit(boolean) {
    var banana = boolean,
        str = "I am fruit.";

    if (banana) return str;
    else return str.replace("fruit","Groot");
}

alert(is_fruit(true));




我更喜欢第二种方法,因为在我看来它更直观,更清晰。但是,是否还需要考虑其他差异?例如。是第一个更快(大规模)?或者没有区别因为JS同步执行?等等。

2 个答案:

答案 0 :(得分:1)

else不是必需的(只要在没有点击任何return语句的情况下该函数无法终止)。

仅在return中使用if语句实际上很常见,甚至是几种编码标准推荐的。

答案 1 :(得分:0)

对于downvotes感到抱歉(我没有贬低你!) - 这可能是因为基于意见的问题在这里不受欢迎。

那就是说,我的偏好是不要在这样的代码中使用else。但更重要的是,对于你正在返回一个或另一个值的情况,我更喜欢adeneo建议的条件表达式。你也可以很容易地格式化它。对于像这样的简单情况,单线程很好,但如果代码稍微复杂一点,你可以这样做:

return banana ?
    str :
    str.replace( "fruit", "Groot" );

(我会将此作为评论而不是答案,但多行格式在评论中不起作用。)