一言で言えば、==最初にタイプを変換してから比較します。===最初にタイプを判断します。同じタイプではない場合は、直接偽です。
===は、比較の双方が絶対に同じでなければならないことを意味します
アラート(0 == ""); // truealert(0 == false); // truealert( "" == false); // 真実
アラート(0 === ""); // falsealSealert(0 === false); // falsealSealert( "" === false); // 間違い
===について話しましょう、これは比較的簡単です、特定の比較ルールは次のとおりです。
1.タイプが異なる場合、それらは[不平等]です
2。両方が数値値であり、同じ値である場合、[等しい]; (!例外)は、少なくともそのうちの1つがnanである場合、[等しくない]です。 (値がnanであるかどうかを判断するには、isnan()のみを使用して判断できます)
3.両方が文字列であり、各位置の文字が同じ場合、[平等];それ以外の[等しくない]。
4.両方の値が真であるか、両方が偽の場合、[等しい]。
5.両方の値が同じオブジェクトまたは関数を参照する場合、[等式];それ以外の[等しくない]。
6.両方の値がnull、または両方が未定義である場合、[等]。
==について話しましょう、特定の比較ルールは次のとおりです。
1. 2つの値タイプが同じ場合、===比較を実行し、比較ルールは上記と同じです。
2。2つの値タイプが異なる場合、それらは等しい場合があります。タイプ変換は、次のルールに従って実行され、次に比較されます。
a。 1つがnullで、もう1つが未定義の場合、[等しい]。
b。 1つが文字列であり、もう1つが数値の場合は、文字列を数値に変換してから比較します。
c。値が真である場合は、1に変換して比較してください。値が偽の場合は、それを0に変換して比較します。
d。 1つがオブジェクトであり、もう1つが数値または文字列である場合、オブジェクトをベースタイプの値に変換してから比較します。オブジェクトを基本タイプに変換し、そのtoStringまたはValueofメソッドを使用します。 JS Coreビルトインクラスは、ToStringの前にValueofを試みます。例外は日付です。これは、ToString変換を使用します。非jsコアオブジェクト、たとえば(もっと面倒だ、私はあまり理解していない)
e。他の組み合わせ(配列配列など)は[不均等]です。