Heim  >  Artikel  >  Web-Frontend  >  Der Unterschied zwischen == und === in js

Der Unterschied zwischen == und === in js

PHPz
PHPzOriginal
2017-04-02 16:38:331011Durchsuche

1. Für Grundtypen wie Zeichenfolge und Zahl gibt es einen Unterschied zwischen == und ===

1) Vergleich zwischen verschiedenen Typen, der Vergleich von == Konvertiert in denselben „Wert“ nach dem Typ, um zu sehen, ob die „Werte“ gleich sind. ===Wenn die Typen unterschiedlich sind, sind die Ergebnisse ungleich

2) Vergleichen Sie denselben Typ und vergleichen Sie ihn direkt „Wert“, das Ergebnis der beiden ist das gleiche

2. Für erweiterte Typen wie Array und Object gibt es keinen Unterschied zwischen == und ===

Vergleichen Sie „Zeigeradressen“

3. Es gibt einen Unterschied zwischen Basistypen und erweiterten Typen, == und ===

1) Für == , erweiterte Typen in Basistypen umwandeln und einen „Wert“-Vergleich durchführen

2) Da die Typen unterschiedlich sind, ist das ===-Ergebnis falsch

Manchmal werden Sie sehen, dass drei Gleichheitszeichen (= ==) werden bei der Beurteilung verwendet, ob zwei Objekte gleich sind, was dasselbe ist wie zwei Gleichheitszeichen. Was ist der Unterschied zwischen Zahlen (==)? Einfach ausgedrückt: Wenn bei Verwendung von „==" die Typen beider Seiten unterschiedlich sind, konvertiert die js-Engine sie in denselben Typ und vergleicht sie dann, während „===" keine Typkonvertierung durchführt Die beiden Seiten gehören nicht zum gleichen Typ, definitiv nicht gleich. Zum Beispiel:

var a = 0, b = '0';

alert((a == b) + '--' + (a === b))

Das Ergebnis, das Sie zu diesem Zeitpunkt sehen, ist „wahr–falsch“.

=== Beurteilungsregeln

  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 [equal]; Ansonsten [nicht gleich].

  4. Wenn beide Werte wahr oder beide falsch sind, dann [gleich].

  5. Wenn sich zwei Werte auf dasselbe Objekt oder dieselbe Funktion beziehen, dann [gleich], andernfalls [ungleich].

  6. Wenn beide Werte null sind oder beide undefiniert sind, dann [gleich].

== Beurteilungsregel:

  1. Wenn die beiden Werttypen gleich sind, führen Sie einen ===-Vergleich durch.

  2. Wenn zwei Werte unterschiedlichen Typs sind, können sie gleich sein. Führen Sie eine Typkonvertierung durch und vergleichen Sie sie dann gemäß den folgenden Regeln:

  • Wenn einer null und der andere undefiniert ist, dann [gleich].

  • Wenn einer eine Zeichenfolge und der andere ein numerischer Wert ist, konvertieren Sie die Zeichenfolge in einen numerischen Wert und vergleichen Sie ihn dann.

  • 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.

  • Wenn eines ein Objekt und das andere ein numerischer Wert oder eine Zeichenfolge ist, konvertieren Sie das Objekt in einen Wert des zugrunde liegenden Typs 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. Für Nicht-JS-Kernobjekte ist jede andere Kombination von

  • [ungleich].

Besonderes Augenmerk sollte auf die Konvertierung von wahr und falsch gelegt werden, zum Beispiel:

alert(true == 1);  //ture
alert(true == 2); //false, true会转换成number,也就是1,当然 1 不等于 2
//可以使用 !! 来把一个数据类型转换为boolean型
alert(true == !!2) //true,!2 === false !(!=2) = !false = true

Außerdem in js, wenn eine Variable in a verwendet wird Logische Operation: Wenn eine Variable keinen Anfangswert hat oder ihr Wert 0, -0, null, „“, falsch, undefiniert oder NaN ist, ist ihr Wert falsch. Ansonsten ist sein Wert wahr.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen == und === in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn