2013-07-28 17 views

答えて

12

第二の形態は、第一形態と全く同じでshort-circuit evaluation、結果として知られています。しかし、最初の形式は読みやすく、保守性を優先する必要があります。

このタイプの短絡回路評価は、右手が条件付きで評価されるif文でよく見られます。下記の例を参照してください。 barは、fooがtrueと評価された場合にのみ評価されます。

if (foo && bar()) { 
    // ... 
} 
+0

+1素晴らしい答え。 – Matt

+0

文法の意味ではまったく同じではありません。 (* expression * vs * statement *) – user123444555621

3

バージョンfoo && bar()式であるので、価値があります

var result = foo && bar(); 

ifバージョンを使用して、上記のようになります。

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

がよりあると詳細。

+1

実際に 'foo && bar();'は式ではなく、 'foo && bar()'は式です。 – zch

+0

@zch修正。これは[式文](http://es5.github.io/#x12.4)です。 – user123444555621

+0

ifバージョンが正しくない。 fooが偽であれば、その偽の値が返されます。したがって、 'else {result = foo; } '。 – bouke

1

ショートサークル評価のブーケの答えは本当に良いです。しかし、bar()の呼び出しにboolean-return-valueがなく、bar()を使ってさらに条件を満たさなければならない場合は、if-statementの使用が良いコーディングスタイルであると付け加えたい。

関連する問題