2016-06-26 17 views
3

におけるオペランドの順序は、私は私のようなものを書いている答えを与えていた多くの人々がJavascriptを:比較演算子

if(1 === a) {...} 

代わりの

if(a === 1) {...} 

を書いて見てきた理由を具体的な理由がありますArray === obj.constructor誰かが私に、obj.constructor === Arrayの代わりにこのような人物をよく見ていると聞いたときです。

どのように使用するかは本当に重要ですか?

+0

である可能性があります。「x === y'」が最初に評価され、xがNaNの場合は、偽が返されます。http://www.ecma-international.org/ecma-262/6.0/ #sec-strict-equality-comparison – gurvinder372

+0

これはプラセボプラクティスです。人々は最も重要な開発問題を解決すると信じています。 – zerkms

答えて

3

それはyoda conditionsです:変数が第二来ながら条件のリテラル値が最初に来るので

依田条件がそのように命名されています。それはスターウォーズキャラクターヨーダが話すのと同じように、「赤は色である」として読み込むので、これはヨーダ条件と呼ばれる

if ("red" === color) { 
    // ... 
} 

:たとえば、次の例は、依田条件です。オペランドを配置する他の方法と比較:これは一般的に読み

if (color === "red") { 
    // ... 
} 

を、比較を説明するために、より自然な方法が間違いなくある、「色は赤です」。

ヨーダ条件の支持者は、リテラル値に代入することができないため、==の代わりに=を誤って使用することは不可能であることを強調しています。そうすると、構文エラーが発生し、早期に間違いが通知されます。したがって、このプラクティスはツールがまだ利用できなかった初期プログラミングでは非常に一般的でした。

ヨーダの条件の反対者は、ツールが==の代わりに= =(ESLintはあなたのためにこれをキャッチします)の間違った使い方をキャッチするので、より良いプログラマを作り出​​したことを指摘しています。したがって、パターンの有用性は、Yoda条件を使用している間のコードの読みやすさのヒット率を上回るものではないと主張しています。

+1

興味深い。力はこのもので強かった。 – shinobi