1

以下のこれらの条件式の違いは何かについて、私は少し混乱しています。

if( 1 == a) { 
   //something
}

if( a == 1 ) {
   //something
}

ダウンロードしたいくつかのスクリプトで上記のものを見ましたが、それらの違いは何だろうと思います。

4

4 に答える 4

1

このconstant == variable構文は、 のようなタイプミスを避けるためによく使用さ===ます。もちろん持っているときもわからずに使われることが多いですconstant == function_call_retuning_nothing_modifiable

それ以外には、奇妙なオペレーターのオーバーライドがない限り、違いはありません。

于 2012-10-08T07:32:00.857 に答える
1

前者はYoda Conditionと名付けられました。

if(1 == a) のように、if(変数 == 定数) の代わりに if(定数 == 変数) を使用します。「空が青いなら」とか「男が背が高いなら」と言っているようなものだからです。

于 2012-10-08T08:38:57.940 に答える
1

多くのプログラミング言語では、代入a = 1を式として使用できるため、次のコードが構文的に有効になります (C や多くのスクリプト言語などの条件で整数を使用できる場合)。

if (a = 1) {
    // something
}

これが望まれることはめったになく、予期しない動作につながる可能性があります。が使用されている場合、 は無効1 == aであるため、この間違いは発生し1 = aません。

于 2012-10-08T07:35:13.373 に答える
1

うーん、コツがわからない。一般に、等号は交換可能であると言えます。したがって、a = b は b = a を意味します。ただし、== または === がある場合、これは特定のケースでは機能しません。たとえば、右側に範囲がある場合: 5 === (1..10) 対 (1..10) === 5.

于 2012-10-08T07:37:54.120 に答える