7

重複の可能性:
これらの(bCondition == NULL)と(NULL == bCondition)の違いは何ですか?
比較ステートメントのJavascriptミニファイ

if私はこのように私の声明を書いてきました:

if(variable1 === 1){}
if(variable2 > 10){}
if(variable3 == "a"){}

しかし、私はどこかで読んだことを覚えています(残念ながら、私はもうそのページを見つけることができません)、そのifステートメントは次のように書く方が良いです:

if(1 === variable1){}
if(10 < variable2){}
if("a" == variable3){}

式の右側に変数を配置する場所。

これは正しいです?そして、もしそうなら、なぜこれが正しいのか誰かが何か光を当てることができますか?また、これはすべてのプログラミング言語に適用されますか、それともjavascriptだけに適用されますか?

TIA

4

4 に答える 4

5

1 === variable1ヨーダ記法**で書かれた式と同じvariable1 === 1です。左側に定数、右側に変数が記載されています。

一部のプログラマーがそれを使用することを選択する主な理由はif (a = 1)、プログラマーが実際に意味する場所if (a == 1)またはを書くというよくある間違いを避けるためif (a === 1)です。次のコード行は機能しますが、期待どおりには機能しません(a値が割り当てられ、ifブロックは常に実行されます)。

if (a = 1) {}

逆に記述された同じ式は、構文(またはコンパイル)エラーを生成します。

if (1 = a) {}

プログラマーはすぐにエラーを見つけて修正できます。

私はヨーダ記法が好きではないか、使用していません。コーディング中は目を開いたままにしようとしています。

**この用語の由来を知ることができません。

于 2013-01-09T11:47:02.743 に答える
2

if2番目の形式の方が保護的であるため、値の順序を逆にすることを好む人もいます。実際、等号を入力し忘れた場合:

if (42 = myVar) { }

コンパイル時に構文エラーをスローしますが、

if (myVar = 42) { } 

代入式の完了値を評価します。42この場合、これはJavaScriptの真の値です。

とにかく、今日の同様のエラーは、eslintなどのツールで簡単に見つけることができます...したがって、最初のフォームを使用するための実際のポイントはありません。

于 2013-01-09T11:44:03.230 に答える
1

どちらも正しいですが、2つ目は醜く、あまり見たことがありません。それは言うのと同じです

「青が空なら」

それ以外の

「空が青いなら」

。私がそれを読んだところをリカルすることはできません:)。

于 2013-01-09T11:42:58.387 に答える
0

===:

定義上、両方のオブジェクトが同じ(同じタイプ、同じ値)であることをチェックするため、可換です。

==:

==変換が含まれるため、より複雑になりますが、仕様では明確になっています。

A == Bは、AとBの評価の順序を除いて、B==Aと同等です。

言い換えれば、==可換です。

これは、読者にとって醜くなく、最も馴染みのあるものを使用する必要があることを意味します。それが最初のものです。

于 2013-01-09T11:44:54.117 に答える