在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同步执行?等等。
答案 0 :(得分:1)
else
不是必需的(只要在没有点击任何return
语句的情况下该函数无法终止)。
仅在return
中使用if
语句实际上很常见,甚至是几种编码标准推荐的。
答案 1 :(得分:0)
对于downvotes感到抱歉(我没有贬低你!) - 这可能是因为基于意见的问题在这里不受欢迎。
那就是说,我的偏好是不要在这样的代码中使用else
。但更重要的是,对于你正在返回一个或另一个值的情况,我更喜欢adeneo建议的条件表达式。你也可以很容易地格式化它。对于像这样的简单情况,单线程很好,但如果代码稍微复杂一点,你可以这样做:
return banana ?
str :
str.replace( "fruit", "Groot" );
(我会将此作为评论而不是答案,但多行格式在评论中不起作用。)