変換規則は次のとおりです。
オペランドの 1 つが Boolean 型の場合、まず数値型に変換され、false は 0 に変換され、true は 1 に変換されます。
一方のオペランドの型が文字列で、もう一方のオペランドが数値型の場合、文字列は比較のために数値に変換されます。
オペランドの 1 つが文字列型で、もう 1 つがオブジェクト型である場合、オブジェクトの toString メソッドが呼び出され、文字列が比較されます。
一方のオペランドの型が数値型で、もう一方のオペランド型がオブジェクト型の場合、オブジェクトは数値に変換され、数値比較が実行されます。
以下は、いくつかの特別な比較を指定します:
null と undefined は等しいです。
null と未定義は他の型に変換されません。
いずれかの演算の結果が NaN の場合、等価比較は false を返し、不等号比較は true を返します。両方のオペランドが NaN であっても、戻り結果は false のままであることに注意してください。つまり、NaN は NaN と等しくありません。
両方のオペランドがオブジェクトの場合、それらが参照する値を比較し、同じオブジェクトを参照している場合は true を返し、それ以外の場合は false を返します。
alert(null == 未定義); // true
alert(unknown == null) // true
alert(true == 1); >alert(false == 0); // true
alert(true == 2); // false
var obj = {}; / false
まったく同じ比較 === ですが、完全に等しくありません!==
まったく同じ比較は、変換なしで等しいかどうかを比較するために使用されます。例:
var a = " 100";
alert(a == b) // true
alert(a === b); 🎜>= 「100」は最初に数値 100 に変換され、次に数値 100 と比較され、結果が等しいため、= 比較は true を返します。
=== 文字列「100」は変換しないと数値 100 と等しくないため、比較は false を返します。
!== は、変換せずに等しいかどうかを比較するために使用されます。
alert(a != b); // false
alert(a !== b); // true
変換後は等しいため、最初のケースは false を返します。 2 番目のケースは true を返します。これは、変換を行わないと、一方は文字列、もう一方は数値であり、等しくないためです。