2

読みやすさ以外に if...else を使用する利点はありますか?

たとえば、関数がある場合:

function a(b){
  if(b=="c"){
    return true
  }else{
    return false
  }
}

次のようにもっと要約できませんでした:

function a(b){
  if(b=="c"){
    return true
  }
  return false
}

return false は、b=="c" である限り起動しませんが、else ステートメントは必要ありません。

私はこれに何度も出くわしましたが、常により凝縮されたバージョンを選択します (ほとんどの場合、これ以上書くことを避けるためです)。このような例では、読みやすさよりもelseステートメントを含める理由はありますか?

4

5 に答える 5

2

通常else、afterreturnは不要と見なされますが、「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

あなたのケースでは、おそらくelseステートメントを省略できます。elseの後に使用すると、JSLint はエラーをスローしますreturn

JSLintで次のコードを試してください。

function test() {

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

条件付きコマンドが関数またはスクリプトを停止する別の方法である場合、答えはノーです。return

ただし、条件付きコマンドが 1 つしかない場合は、ブラケットよりも役に立ち{}ません。

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

2 番目のサンプルと の後に;半円柱がないことに注意してください。true"match"

于 2012-10-26T08:40:24.250 に答える
1
function a(b) { return b == "c";}

後で編集:

「if」内に「return」ステートメントがある場合は、「else」ステートメントを省略できます。

于 2012-10-26T08:26:44.520 に答える
1

与えられた例では、実際の違いはありません。return ステートメントを使用して、誤った入力結果やエラーの可能性をすべて除外し、関数本体が過剰に識別されないようにすることをお勧めします。

于 2012-10-26T08:29:50.903 に答える