次の 2 つのスニペットに違いはありますか、またはどちらか一方を使用する理由はありますか?
if (foo) {
bar();
}
foo && bar();
2 番目の形式は短絡評価と呼ばれ、最初の形式とまったく同じ結果になります。ただし、最初の形式の方が読みやすく、保守性のために優先する必要があります。
このタイプの短絡評価は、右側が条件付きで評価される if ステートメントでよく見られます。以下の例を参照してください。barは、foo が true と評価された場合にのみ評価されます。
if (foo && bar()) {
// ...
}
バージョンfoo && bar()
は式であるため、次の値があります。
var result = foo && bar();
バージョンを使用する場合if
、上記は次のようになります。
var result;
if (foo) {
result = bar();
}
これはより冗長です。
近道評価のボウケの答えは本当に良いです。しかし、bar() の呼び出しにブール値の戻り値がなく、bar() を使用してそれ以上の条件を満たす必要がない場合は、if ステートメントを使用するのが良いコーディング スタイルであることを付け加えたいと思います。