javascriptの中の==と==

1193 ワード

一例から話してください.
var s = new String("abc");
s ==  "abc"         //true       
s === "abc"         //false
==と==は出力結果が違っていますが、なぜですか?資料を調べたら、
1.string、numberなどの基礎タイプに対して、==は判定値が等しいかどうかを判断し、==は判定値とタイプが完全に等しいかを判断します.
   typeof s          //  Object
   typeof "abc"      //  string
つまり、newはObjectタイプで、abcはstringタイプで、sの値は"abc"だからs==abc"はtrueに戻り、s==abc"はfalseに戻ります.
実は、Number、String、Booleanの3つのタイプはnumber、string、bolの包装タイプです.
Objectは、valueof()のようにパッケージのオリジナルタイプの値を取得し、実行することができます.s.valueof()==abcは、バックの結果がtrueです.
2.2つの値が同じオブジェクト、配列または関数である場合、それらは全く同じです.
3.基礎タイプと高級タイプとの比較は、==と==の違いがあります.
1)対==に対して、高級をベースタイプに変換し、「値」の比較を行う2)タイプが異なるため、===結果はfalseとなります.