JavaScriptの操作子==と==を紹介します.

1477 ワード

JavaScriptでは、==と==の両方が2つの値が等しいかどうかを判断するために使用できます.異なる点は、判断する2つの値のタイプが一致しない場合、==演算子は直接falseに戻り、==操作子はタイプ変換後に判断することです.詳細な判断ルールは以下の通りです.
==操作子の判断ルール
1.2つの値のタイプが一致しない場合、falseを返します.2.2つの値のタイプが一致すると、値が一致してtrueを返します.NaNは特殊な例であり、NaN==NaNはfalseに戻る.3.両方の値がobjectタイプの場合、Javaと同様に、両方の参照が一致していない限り、objectの内容が完全に同じであっても、この二つの値が一致していないと判断し、対応する操作はfalseに戻ります.例えば、2つのコンテンツが完全に同じ配列を新規作成し、それらを==操作して返した結果はfalseとなります.それらの内容は全く同じですが、まだ2つの異なるオブジェクトに属しています.4.0==-0はtrueに戻ります.
==操作子の判断ルール
==演算子は値をタイプ変換して比較しますが、そのタイプ変換はnumberに優先的に変換して比較し、Dateオブジェクトは優先的にstringに変換して比較します.具体的な判断ルールは以下の通りです.
1.2つの値の種類が一致したら、==を実行して戻ります.2.null==undefinedはtrueです.3.trueは1に変換して比較し、falseは0に変換して比較します.4.いずれかの値が対象であれば、numberに変換して比較し、Dateオブジェクトは除外します.5.どちらかの値がDateオブジェクトであれば、stringに変換して比較します.
実験
 
  
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