5

次の 2 つのスニペットに違いはありますか、またはどちらか一方を使用する理由はありますか?

if (foo) {
    bar();
}

 

foo && bar();
4

3 に答える 3

13

2 番目の形式は短絡評価と呼ばれ、最初の形式とまったく同じ結果になります。ただし、最初の形式の方が読みやすく、保守性のために優先する必要があります。

このタイプの短絡評価は、右側が条件付きで評価される if ステートメントでよく見られます。以下の例を参照してください。barは、foo が true と評価された場合にのみ評価されます。

if (foo && bar()) {
    // ...
}
于 2013-07-28T12:05:15.683 に答える
3

バージョンfoo && bar()は式であるため、次の値があります。

var result = foo && bar();

バージョンを使用する場合if、上記は次のようになります。

var result;
if (foo) {
    result = bar();
}

これはより冗長です。

于 2013-07-28T12:47:42.823 に答える
2

近道評価のボウケの答えは本当に良いです。しかし、bar() の呼び出しにブール値の戻り値がなく、bar() を使用してそれ以上の条件を満たす必要がない場合は、if ステートメントを使用するのが良いコーディング スタイルであることを付け加えたいと思います。

于 2013-07-28T13:31:02.357 に答える