ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptの2等号と3等号の違い入門_基礎知識
簡単に言うと、 == まず型を変換してから比較し、 === まず型を決定します。同じ型でない場合は、直接 false になります。
=== は等しいことを意味し、比較の両側は完全に同じである必要があります
alert(0 == ""); // true alert(0 == false); // true alert("" == false); // true
alert(0 === ""); // false alert(0 === false); // false alert("" === false); // false
まず === について説明します。これは比較的単純です。
1. 型が異なる場合、[等しくない]
2. 両方が数値で同じ値の場合、[等しい] (!例外) は、少なくとも 1 つが NaN の場合、[等しくない] ことを意味します。 (値が NaN であるかどうかを判断するには、isNaN() を使用してのみ判断できます)
3. 両方が文字列であり、各位置の文字が同じである場合は [等しい]、そうでない場合は [等しくない]。
4. 両方の値が true、または両方とも false の場合、[等しい]。
5. 両方の値が同じオブジェクトまたは関数を参照している場合は [等しい]、そうでない場合は [等しくない]。
6. 両方の値が null であるか、両方が未定義の場合、[等しい]。
== の具体的な比較ルールは次のとおりです:
1. 2 つの値の型が同じ場合、=== 比較を実行します。比較ルールは上記と同じです。
2. 2 つの値のタイプが異なる場合、それらは等しい可能性があります。次のルールに従って型の変換と比較を実行します:
a. 一方が null で、もう一方が未定義の場合、[等しい]。
b. 一方が文字列で、もう一方が数値の場合、文字列を数値に変換して比較します。
c. いずれかの値が true の場合は 1 に変換して比較し、いずれかの値が false の場合は 0 に変換して比較します。
d. 一方がオブジェクトで、もう一方が数値または文字列の場合、オブジェクトを基本型の値に変換して比較します。オブジェクトは、toString メソッドまたは valueOf メソッドを使用して基本型に変換されます。 JS コアの組み込みクラスは toString の前に valueOf を試行しますが、toString 変換を使用する Date は例外です。非jsコアオブジェクト、Ling Shuo (もっと面倒です、よくわかりません)
e. その他の組み合わせ (配列配列など) は [等しくない] です。