在可读性之外使用if ... else是否有好处?
例如,如果我有一个功能:
function a(b){
if(b=="c"){
return true
}else{
return false
}
}
我不能这样压缩它:
function a(b){
if(b=="c"){
return true
}
return false
}
只要b ==“c”,返回false就不会触发,但它不需要else语句。
我已经多次遇到这种情况,而且我总是选择更精简的版本(主要是为了节省写作更多)。对于这样的例子,是否有理由将else语句包含在可读性之外?
答案 0 :(得分:1)
function a(b) { return b == "c";}
稍后编辑:
如果你的“if”中有“return”语句,你可以省略“else”语句,因为。
答案 1 :(得分:1)
在给定的例子中,没有实际差异。我发现最好使用return语句来过滤掉所有不正确的输入结果或可能的错误,以保存函数体免于过度标识。
答案 2 :(得分:1)
else
通常return
被认为是多余的,但是,当“是”和“否”分支在某种意义上相似时,最好将它们保持在相同的缩进级别,为此对称性比较:
// confusing
if (spam.exists()) {
$(box).content = "Spam already exists";
$(button).disable();
return failure;
}
$(box).content = "Added new spam";
$(button).enable();
return success;
和
// less confusing
if (spam.exists()) {
$(box).content = "Spam already exists";
$(button).disable();
return failure;
} else {
$(box).content = "Added new spam";
$(button).enable();
return success;
}
答案 3 :(得分:1)
如果条件命令是return
或其他停止函数或脚本的方式,答案是否。
但如果只有一个conditionnal命令,则括号{}
无用:
function a(b){
if(b=="c") return true;
return false;
}
和
function a(b){
if(b=="c") return true
else return false;
}
完成与原始帖子完全相同的工作。 else
语句通常用于此类技巧:
if (b=="c") z="match"
else z="wrong";
请注意,在第二个样本;
之后和true
之后,没有半长"match"
。
答案 4 :(得分:1)
你可以在你的情况下省略else语句。在else
之后使用return
时,JSLint甚至会出错。
在JSLint上尝试以下代码:
function test() {
"use strict";
var b;
if(b === "c") {
return true;
} else {
return false;
}
}