javascript中==のデータタイプ変換規則
1534 ワード
2)オブジェクト==文字列は、まず対象を文字列に変換し(toString()メソッドを呼び出してから比較します.)例えば、
[] == "" //true, [].toString()
({}) == "" // false
({}.toString()) // "[object Object]"
[].toString(); // ""
3)オブジェクト==ブールタイプ、オブジェクトを先に文字列に変換し、文字列を数字に変換します.ブールタイプも数字に変換します.最後に二つの数字を比較させます.Number('') // 0
[] == false // true
4)オブジェクト==デジタルオブジェクトを先に文字列に変換し、文字列を数字(Number()/[]->>>>>>""05)の数字=ブールを数字(Number()、trueを1に変換します.falseは06)数字==文字列は数字7に変換されます.文字列==ブールは数字8に変換されます.null==undefinedはtrue 9です.nullまたはundefinedは他のデータタイプと同じではありません.NaNは何も等しくありません.==
が比較であることを除いて、===
も比較(絶対比較)であり、val 1とval 2はデータタイプが違っていれば、決して等しくない.つまり、
==
のデータタイプ変換の基本的な考え方は、文字列を回転させることができますが、文字列を回転させることができます.まだ数字を回転させることができません.ですから、[]==![]
はtrueに戻ります.これはオブジェクトタイプとブールタイプの比較です.両方の数字を回転したら0です.実際には、これらのデータ変換の法則はあまり役に立たないので、判定などの場合は、データタイプの変換を避けるために、できるだけ
===
を使用しなければならず、nullとundefinedを判断するときだけ==
を使用することができる.ちなみに、javascriptの演算子優先度は、高いものから低いものまで、ほぼ次のようになります.
=<=>