Heim >Web-Frontend >js-Tutorial >JavaScript Advanced Series – Gleichheit und Vergleich in Typen
Gleichheitsoperator
Strikter Gleichheitsoperator
Objekte vergleichen
Fazit
JavaScript bietet zwei Möglichkeiten, um festzustellen, ob zwei Werte gleich sind.
Gleichheitsoperator
Der Gleichheitsoperator besteht aus zwei Gleichheitszeichen: ==
JavaScript ist eine schwach typisierte Sprache, was bedeutet, dass der Gleichheitsoperator zum Vergleich verwendet wird Zwei Werte werden gegossen.
"" == "0" // false 0 == "" // true 0 == "0" // true false == "false" // false false == "0" // true false == undefined // false false == null // false null == undefined // true " \t\r\n" == 0 // true
Die obige Tabelle zeigt die erzwungene Typkonvertierung, die der Hauptgrund dafür ist, dass die Verwendung von == allgemein als schlechte Programmiergewohnheit angesehen wird, die aufgrund ihrer Verwendung zu Problemen führen kann, die schwer aufzuspüren sind komplexe Konvertierungsregeln.
Darüber hinaus führt die erzwungene Typkonvertierung auch zu Leistungseinbußen. Um beispielsweise eine Zeichenfolge mit einer Zahl zu vergleichen, muss diese im Voraus in eine Zahl umgewandelt werden.
Strenger Gleichheitsoperator
Der strikte Gleichheitsoperator besteht aus drei Gleichheitszeichen: ===
Nicht wie der gewöhnliche Gleichheitsoperator Der strikte Gleichheitsoperator führt keine Typkonvertierung durch.
"" === "0" // false 0 === "" // false 0 === "0" // false false === "false" // false false === "0" // false false === undefined // false false === null // false null === undefined // false " \t\r\n" === 0 // false
Die obigen Ergebnisse sind klarer und hilfreich für die Codeanalyse. Wenn die beiden Operandentypen unterschiedlich sind, sind sie definitiv nicht gleich und tragen zur Verbesserung der Leistung bei.
Vergleichsobjekte
Obwohl die Operatoren == und === beide gleiche Operatoren sind, ist das Verhalten anders, wenn einer der Operanden ein Objekt ist .
{} === {}; // false new String('foo') === 'foo'; // false new Number(10) === 10; // false var foo = {}; foo === foo; // true
Der Gleichheitsoperator vergleicht hier nicht, ob die Werte gleich sind, sondern ob sie zur gleichen Identität gehören, d. h. nur die gleiche Instanz des Objekts wird als gleich betrachtet. Das ist ein bisschen wie in Python und der Zeigervergleich in C.
Hinweis: Um den Unterschied zwischen == und === intuitiver zu erkennen, lesen Sie bitte die JavaScript-Gleichheitstabelle
Schlussfolgerung
Es wird dringend empfohlen, den strikten Gleichheitsoperator zu verwenden. Wenn ein Typ konvertiert werden muss, sollte dies explizit vor dem Vergleich erfolgen, anstatt die komplexen Zwangsregeln der Sprache selbst zu verwenden.
Das Obige ist die JavaScript-Serie für Fortgeschrittene – Gleichheit und Vergleich der Typen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!