Heim >Web-Frontend >js-Tutorial >JavaScript Advanced Series – Gleichheit und Vergleich in Typen

JavaScript Advanced Series – Gleichheit und Vergleich in Typen

黄舟
黄舟Original
2017-02-08 09:50:291428Durchsuche
  • 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)!


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