答えて
第二の形態は、第一形態と全く同じでshort-circuit evaluation、結果として知られています。しかし、最初の形式は読みやすく、保守性を優先する必要があります。
このタイプの短絡回路評価は、右手が条件付きで評価されるif文でよく見られます。下記の例を参照してください。 barは、fooがtrueと評価された場合にのみ評価されます。
if (foo && bar()) {
// ...
}
+1素晴らしい答え。 – Matt
文法の意味ではまったく同じではありません。 (* expression * vs * statement *) – user123444555621
バージョンfoo && bar()
式であるので、価値があります
var result = foo && bar();
if
バージョンを使用して、上記のようになります。
var result;
if (foo) {
result = bar();
}
がよりあると詳細。
実際に 'foo && bar();'は式ではなく、 'foo && bar()'は式です。 – zch
@zch修正。これは[式文](http://es5.github.io/#x12.4)です。 – user123444555621
ifバージョンが正しくない。 fooが偽であれば、その偽の値が返されます。したがって、 'else {result = foo; } '。 – bouke
ショートサークル評価のブーケの答えは本当に良いです。しかし、bar()の呼び出しにboolean-return-valueがなく、bar()を使ってさらに条件を満たさなければならない場合は、if-statementの使用が良いコーディングスタイルであると付け加えたい。
- 1. Clojureのfoo、:: foo、:: bar/foo、および:bar/fooの違いは何ですか?
- 2. index.phpを書き直すfoo = bar & bar = foo to index.php?foo = bar&bar = foo
- 3. if(!isset($ foo)OR(isset($ foo)AND $ foo == $ bar)) `または` if(!isset($ foo)OR $ foo == $ bar) `が良いですか?
- 4. python argparse store --foo = bar as args.key = 'foo'、args.value = 'bar'
- 5. jooの "foo.bar"と "foo ['bar']の違い
- 6. Foo [T]とBar [T]のマップ
- 7. Regex( 'foo' | 'bar')表記
- 8. http.conf example.com/foo/barをexample.com/foo?id=barにリダイレクト
- 9. 文字列foo = "bar"と文字列foo = Androidの新しい文字列( "bar")?
- 10. これは良いfoo :: bar()VS $ foo :: bar()ですか?このについて
- 11. 「%w(foo、bar)」はエリクシルの
- 12. path.join path.join対(__ dirnameは、 "foo" という、 "バー")(__ dirnameは、 "FOO/BAR")
- 13. クラスFooにはオブジェクトBar、FooテーブルにはBarオブジェクトへのポインタがありません。BarオブジェクトにはFoo to Fooがあります。
- 14. if(x){foo();の違い}とx? foo():0;
- 15. fooフィールドだけを取得するにはどのようにフィルタ{"foo": "bar"、 "bar": "foo"} grok?
- 16. 「call echo!line:%% foo %% = bar!」について
- 17. `typedef typename Foo <T> :: Bar Bar 'のテンプレート宣言
- 18. KohanaはfooクラスのView :: factory( '/ foo/bar')ヒットバーを作成します
- 19. なぜ 'foo bar'と 'foo> bar'はCSSで同じ特異性を持っていますか?
- 20. C#の["foo bar"]行は何ですか?
- 21. nginxでaddress.com:port/barにaddress.com/foo/barをリダイレクトする方法は?
- 22. Rails 2.3.12: 'GET/foo'、 'PUT/foo'、 '<any>/foo/bar'を個別にルーティングする
- 23. Perl正規表現/ foo | bar/negation
- 24. Ruby関数呼び出し:foo "bar" do
- 25. 'foo' OR 'bar' AND 'lol' OR 'rofl' MySQL
- 26. Foo * fooの違い。とフーfoo; C++で
- 27. Retrieve Type Foo <Bar>名前からBarを作成したときにTypeBuilder
- 28. "foo/bar"にマッチし、 "foobar"と一致しない正規表現
- 29. $ foo - > {bar}は自動化されますが、%$ fooはなぜですか?
- 30. jQuery:$ foo変数を使用する$( 'foo + bar')セレクタを書き換えます
第1回は伝統的です。効果的には、彼らは同じだ。 –
違いはありませんが、私は1行の 'if'文が好きです。 'if(foo)bar();' – elclanrs