0

プロフェッショナルな環境でJavaScriptを使用している人は誰でもね。==演算子と===演算子を使用して値を比較するときの標準を知りたいと思いました。値が「5」のstingと値が5のintを比較すると、==演算子を使用してtrueが返されると説明されているビデオを見ていました。次に、すべてに===を使用することを提案しました。異なるタイプのdefを持ついくつかのポリモーフィックオブジェクトにネストされた値を比較したい場合、一方が学生でもう一方がインストラクターであると言うと、===は常にfalseを返すので、これは間違っていることを私は知っています。

よく考えた結果、可能な限り===を使用し、必要な場合にのみ==を使用するのが最善であるという結論に達しました。

専門的な環境での経験則について教えてください。

4

3 に答える 3

4

ルールは簡単です:

明示的に型変換を許可し、その型変換の結果を熟考した場合を除き、常に===andを使用してください。つまり、ほぼ常にand!==を使用する必要があります。===!==


2 つのオブジェクトを比較するときに 2 つのオブジェクトがまったく同じオブジェクトである必要があるため==、ポリモーフィック オブジェクトの例外は適用されません。===その場合、型変換はありません。ポリモーフィック オブジェクトの 2 つのプロパティを比較する場合、含まれているオブジェクトの型ではなく、プロパティの型のみが調べられます。


での型変換に関する詳細な規則については==、このhttp://es5.github.com/#x11.9.3を参照してください。次のような奇妙なものがあります。

var x;              // x is undefined
alert(x == null);​   // alerts true
于 2012-08-21T20:13:55.237 に答える
1

これらのベストプラクティスの実施に役立つhttp://jshint.comを確認してください 。彼ら(そして他のほとんどの人)はを使用することをお勧めし===ます。

==を使用する理由を考えることはめったにありません===

これは、簡単に感じる===場合でも使用するためのすばらしい例です。==

var person = {
    name: "Cody",
    age: "44"
}

var targetAge = 40;

// explicit type conversion, no wonder what's happening
if (parseInt(person.age, 10) === targetAge) {
    alert("You won!")
} else {
    alert("Sorry You Lost!");
}

関連項目:JavaScript:優れた部分保守可能なJavaScript。これも実践を推奨しています。

于 2012-08-21T20:25:29.450 に答える
0

このタイプのステートメントで一般的に使用されます。

var x = 0;
if(x == false) {
   // this will be executed   
}
if(x === false) {
   // this not
}
if(false == '') {
  // this will be executed
}
if(false === '') {
  // this not
}

FALSE別の例 -エラーまたはstring成功時に返される関数

function foo(bar) {
   // magic
   return ''; // this is SUCCESS
}
var result = foo(123);
if(result === false) {
  // omg error!!
}else{
  // some string returned, event empty one is OK
}

===正直なところ、ステートメントで使用することは本当にまれです

于 2012-08-21T20:15:06.720 に答える