In JavaScript können sowohl die Operatoren == als auch === verwendet werden, um zu bestimmen, ob zwei Werte gleich sind. Der Unterschied besteht darin, dass der Operator === direkt false zurückgibt. while Der Operator == wird nach der Typkonvertierung beurteilt. Die detaillierten Beurteilungsregeln lauten wie folgt:
=== Beurteilungsregeln für Betreiber
1. Wenn die Typen der beiden Werte inkonsistent sind, geben Sie false zurück.
2. Wenn die beiden Werte denselben Typ und denselben Wert haben, geben Sie true zurück. NaN ist ein Sonderfall, NaN===NaN gibt false zurück.
3. Wenn die beiden Werte beide vom Objekttyp sind, gilt wie bei Java, es sei denn, die beiden Referenzen sind konsistent (Referenzpunkte auf dieselbe Objektadresse), auch wenn der Inhalt im Objekt genau gleich ist Zwei Werte werden als inkonsistent betrachtet und die entsprechenden Operationen werden als falsch zurückgegeben. Wenn Sie beispielsweise zwei neue Arrays mit genau demselben Inhalt erstellen und die Operation === für sie ausführen, ist das Rückgabeergebnis falsch – obwohl ihre Inhalte genau gleich sind, gehören sie dennoch zu zwei verschiedenen Objekten.
4.0===-0 gibt true zurück.
==Beurteilungsregeln für Operatoren
Der Operator== konvertiert den Typ des Werts vor dem Vergleich. Die Typkonvertierung folgt den folgenden Prinzipien: Sie wird vor dem Vergleich zunächst in eine Zahl umgewandelt, und das Datumsobjekt wird vor dem Vergleich zunächst in eine Zeichenfolge umgewandelt. Die spezifischen Beurteilungsregeln lauten wie folgt:
1. Wenn die beiden Werttypen konsistent sind, führen Sie die Operation === aus und kehren Sie zurück.
2.null==undefiniert ist wahr.
3. true wird vor dem Vergleich in 1 umgewandelt, false wird vor dem Vergleich in 0 umgewandelt.
4. Wenn einer der Werte ein Objekt ist, konvertieren Sie ihn vor dem Vergleich in eine Zahl, mit Ausnahme von Datumsobjekten.
5. Wenn einer der Werte ein Datumsobjekt ist, konvertieren Sie ihn vor dem Vergleich in eine Zeichenfolge.
Experimentieren
console.log("3" == 3);//true
console.log(null == undefiniert);//true
console.log(true == 1);//true
console.log(true == 9);//false
console.log([9] == 9);//true
console.log([9] == "9");//true
var d = new Date();
var s = d.toString();
var n = d.valueOf();
console.log(d == s);//true
console.log(d == n);//false