ホームページ > 記事 > ウェブフロントエンド > JavaScript_javascript スキルにおける演算子 == および === の紹介
JavaScript では、== 演算子と === 演算子の両方を使用して 2 つの値が等しいかどうかを判断できます。違いは、2 つの値の型が一致しない場合、=== 演算子は直接 false を返すことです。 while == 演算子は型変換後に判定されます。詳細な判定ルールは以下のとおりです。
=== 演算子の判定ルール
1. 2 つの値の型が一致しない場合は false を返します。
2. 2 つの値が同じ型および同じ値である場合、true を返します。 NaN は特殊なケースで、NaN===NaN は false を返します。
3. 2 つの値が両方ともオブジェクト型の場合は、Java と同様に、2 つの参照が一致しない限り (参照が同じオブジェクト アドレスを指している場合)、オブジェクト内の内容がまったく同じであっても、 2 つの値は矛盾しているとみなされ、対応する操作が実行されると false が返されます。たとえば、まったく同じ内容を持つ 2 つの新しい配列を作成し、それらに対して === 演算を実行すると、戻り結果は false になります。内容はまったく同じですが、2 つの異なるオブジェクトに属していることに変わりはありません。
4.0===-0 は true を返します。
==演算子の判定ルール
== 演算子は、比較の前に値の型を変換します。型変換は、比較の前にまず数値に変換され、比較の前に最初に Date オブジェクトが文字列に変換されます。具体的な判定ルールは以下のとおりです。
1. 2 つの値の型が一致する場合は、=== 演算を実行して戻ります。
2.null==未定義は true です。
3. true は比較前に 1 に変換され、false は比較前に 0 に変換されます。
4. 値の 1 つがオブジェクトである場合は、Date オブジェクトを除き、比較する前に数値に変換します。
5. 値の 1 つが Date オブジェクトである場合は、比較する前に文字列に変換します。
実験
console.log("3" == 3);//true
console.log(null == 未定義);//true
console.log(true == 1);//true
console.log(true == 9);//false
console.log([9] == 9);//true
console.log([9] == "9");//true
var d = new Date();
var s = d.toString();
var n = d.valueOf();
console.log(d == s);//true
console.log(d == n);//false