JavaScriptでは、==および==演算子を使用して、2つの値が等しいかどうかを判断できます。違いは、判断された2つの値が一貫性がない場合、===演算子は誤ったものを直接返し、==オペレーターはタイプ変換後に判断を下すことです。詳細な判断規則は次のとおりです。
===オペレーターを審査するためのルール
1. 2つの値のタイプが一貫していない場合、falseを返します。
2。2つの値が同じタイプで、値が同じ場合、trueを返します。 NANは特別なケースです。NAN=== NANはFALSEを返します。
3.両方の値がオブジェクトタイプである場合、参照が一貫していない限り(同じオブジェクトアドレスへの参照ポイント)場合、Javaのように、オブジェクト内のコンテンツがまったく同じであっても、2つの値は一貫性がなく、対応する操作はfalseを返します。たとえば、まったく同じコンテンツを持つ2つの新しい配列を作成し、===操作を実行して結果をfalseに返します。コンテンツはまったく同じですが、2つの異なるオブジェクトに属します。
4.0 === -0はtrueを返します。
==オペレーターの判断に関する規則
==演算子は値を入力し、それを比較します。タイプ変換は次の原則に従います。最初に数値に変換してから比較し、最初に文字列に変換してから比較します。特定の判断ルールは次のとおりです。
1. 2つの値タイプが同じ場合、===操作を実行した後に戻ります。
2.Null ==未定義は真です。
3。trueは1に変換され、比較され、Falseは0に変換され、比較されます。
4.値の1つがオブジェクトである場合、日付オブジェクトを除き、数値に変換してから比較します。
5.値の1つが日付オブジェクトの場合、文字列に変換してから比較します。
実験
コードコピーは次のとおりです。
console.log( "3" === 3); // false
console.log(nan === nan); // false
var a = {x:1、y:2};
var b = {x:1、y:2};
var c = a;
console.log(a === b); // false
console.log(a === c); // true
console.log(0 === -0); // true
console.log( "3" == 3); // true
console.log(null == undefined); // 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