Kurz gesagt: == Konvertieren Sie zuerst den Typ und vergleichen Sie ihn dann. === Bestimmen Sie zuerst den Typ. Wenn es sich nicht um denselben Typ handelt, ist er direkt falsch.
=== bedeutet Gleichheit, beide Seiten des Vergleichs müssen absolut gleich sein
alert(0 == ""); // true alert(0 == false); // true alert("" == false); // true
alert(0 === ""); // false alert(0 === false); // false alert("" === false); // false
Lassen Sie uns zunächst über === sprechen. Die spezifischen Vergleichsregeln lauten wie folgt:
1. Wenn die Typen unterschiedlich sind, [nicht gleich]
2. Wenn beide numerische Werte sind und den gleichen Wert haben, dann ist [gleich] (!Ausnahme): Wenn mindestens einer von ihnen NaN ist, dann ist [nicht gleich]. (Um festzustellen, ob ein Wert NaN ist, können Sie nur isNaN() verwenden)
3. Wenn beide Zeichenfolgen sind und die Zeichen an jeder Position gleich sind, dann [gleich], andernfalls [nicht gleich].
4. Wenn beide Werte wahr oder beide falsch sind, dann [gleich].
5. Wenn sich beide Werte auf dasselbe Objekt oder dieselbe Funktion beziehen, dann [gleich], andernfalls [ungleich].
6. Wenn beide Werte null sind oder beide undefiniert sind, dann [gleich].
Was == betrifft, lauten die spezifischen Vergleichsregeln wie folgt:
1. Wenn die beiden Werttypen gleich sind, führen Sie einen ===-Vergleich durch. Die Vergleichsregeln sind dieselben wie oben
2. Wenn zwei Werttypen unterschiedlich sind, können sie gleich sein. Führen Sie die Typkonvertierung und den Vergleich gemäß den folgenden Regeln durch:
a. Wenn einer null und der andere undefiniert ist, dann [gleich].
b. Wenn einer eine Zeichenfolge und der andere ein numerischer Wert ist, konvertieren Sie die Zeichenfolge in einen numerischen Wert und vergleichen Sie ihn dann.
c. Wenn ein Wert wahr ist, konvertieren Sie ihn in 1 und vergleichen Sie ihn. Wenn ein Wert falsch ist, konvertieren Sie ihn in 0 und vergleichen Sie ihn.
d. Wenn eines ein Objekt und das andere ein numerischer Wert oder eine Zeichenfolge ist, konvertieren Sie das Objekt in einen Wert des Basistyps und vergleichen Sie es dann. Das Objekt wird mithilfe seiner toString- oder valueOf-Methode in den Basistyp konvertiert. Integrierte JS-Kernklassen versuchen valueOf vor toString; die Ausnahme ist Date, das die toString-Konvertierung verwendet. Nicht-js-Kernobjekte, Ling Shuo (es ist schwieriger, ich verstehe es nicht ganz)
e. Jede andere Kombination (Array-Array usw.) ist [ungleich].