1

ウェブサイトのソースコードを検索しながら、別の方法でステートメントを書く方法を見つけましたif(私は思います)。

それ以外の:

if(a)b;

また:

a?b:'';

私は読む:

!a||b;

3番目の方法は最初の2つの方法と同じですか?もしそうなら、なぜ私たちは第三の道を使うのでしょうか?

4

3 に答える 3

4

3番目の方法は前の方法と同じです。これを使用するための1つの引数は、バイトの節約です。それを使用することに反対する強い議論は、読みやすさです。コードを書く際には読みやすさに重点を置き、最小化機能(Google ClosureCompilerなど)を使用してバイトを節約することをお勧めします。

さらに短くすることもできます。

a && b;
/*  !a||b  means:
 (not a) OR b
    which is equivalent to
 a AND b
    which turns out to be
 a && b
*/
于 2012-06-20T13:55:25.930 に答える
4

短絡評価の概念へようこそ。これは、さまざまな言語で使用される論理演算子のよく知られたプロパティです。ほとんどの場合、これは、適切なifフロー制御ステートメントまたはその他のフロー制御ステートメント内の部分式として使用されるか、この方法で読みやすさを維持するために条件を十分に短く表現するため、またはバイトを節約するための自動変換によって使用されます。

それらに関する質問のタグさえあります:

于 2012-06-20T14:00:37.287 に答える
1

ブール式の結果は、すべての部分式を評価せずに評価できる場合があります。がありA||B、 trueの場合、結果はとにかくtrueになるため、Aを評価する必要はありません。Bこの動作は「ショートカットブール評価」と呼ばれ、ほとんどのプログラミング言語でデファクトスタンダードです。オペランドをif (i < A.length && A[i] == ...)評価せずに式を記述できるため、値が正しくない場合に例外が発生する可能性があります。A[i]i

この特定のケースで!a||bは、はいと同じですif(a)bが、そのようなコードの可読性と保守性は問題です。

于 2012-06-20T14:03:54.087 に答える