まず第一に、== 平等は等しい、=== 同一性は等しい。
==、両側の値の型が異なる場合は、まず型変換を実行してから比較する必要があります。
===、型変換は実行されず、異なる型は等価であってはなりません。
以下についてそれぞれ説明します:
まず === について話しましょう。これは比較的単純です。次のルールは、2 つの値が === 等しいかどうかを判断するために使用されます:
1. 型が異なる場合、[等しくない]
2. 両方が数値であり、同じ値である場合、[等しい]; (!例外) は、それらの少なくとも 1 つが NaN である場合、[等しくない] ことを意味します。 (値が NaN であるかどうかを判断するには、isNaN() を使用してのみ判断できます)
3. 両方が文字列であり、各位置の文字が同じである場合は [等しい]、そうでない場合は [等しくない]。
4. 両方の値が true または両方が false の場合、[等しい]。
5. 両方の値が同じオブジェクトまたは関数を参照している場合は [等しい]、それ以外の場合は [等しくない]。
6. 両方の値が null であるか、両方が未定義の場合、[等しい]。
次のルールに従って == について話しましょう:
1. 2 つの値の型が同じ場合、=== 比較を実行します。
2. 2 つの値の型が異なる場合、それらは等しい可能性があります。次のルールに従って型の変換と比較を実行します:
a. 一方が null で、もう一方が未定義の場合、[等しい]。
b. 一方が文字列で、もう一方が数値の場合、文字列を数値に変換して比較します。
c. いずれかの値が true の場合