2

在可读性之外使用 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",return false 就不会触发,但它不需要 else 语句。

我遇到过很多次,我总是选择更精简的版本(主要是为了节省更多的写作时间)。对于这样的例子,是否有理由包含 else 语句而不是可读性?

4

5 回答 5

2

通常elseafterreturn被认为是多余的,但是,当“yes”和“no”分支在某种意义上相似时,为了对称,最好将它们保持在相同的缩进级别。比较:

// 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;
}
于 2012-10-26T08:35:50.637 回答
1
function a(b) { return b == "c";}

后期编辑:

如果你的“if”中有一个“return”语句,你可以省略“else”语句,因为。

于 2012-10-26T08:26:44.520 回答
1

在给定的示例中,没有实际差异。我发现最好使用 return 语句过滤掉所有不正确的输入结果或可能的错误,以防止函数体过度识别。

于 2012-10-26T08:29:50.903 回答
1

如果条件命令是或以其他方式停止函数或脚本,则答案是否定的。return

但是如果只有一个条件命令,那么括号{}就没有用了:

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";

notice that there is no semicolumn ; after the true in second sample and after"match".

于 2012-10-26T08:40:24.250 回答
1

You can probably omit the else statement in your case. JSLint is even throwing in error when using else after a return.

Try following code on JSLint:

function test() {

    "use strict";
    var b;
    if(b === "c") {
        return true;
    } else {
        return false;
    }
}
于 2012-10-26T10:38:50.137 回答