Heim > Web-Frontend > js-Tutorial > Entschlüsseln des '===' von JavaScript

Entschlüsseln des '===' von JavaScript

Mary-Kate Olsen
Freigeben: 2025-01-27 06:29:10
Original
472 Leute haben es durchsucht

Unraveling the

Diese Anleitung befasst sich mit den Feinheiten des strengen Gleichstellungsoperators von JavaScript (===), wie in dem Abschnitt "Strict Equality -Vergleich der ECMAScript -Spezifikation" definiert. Erforschen wir Schritt für Schritt seine Funktionalität:

Der === Algorithmus: ein detailliertes Aussehen

Der Betreiber === verwendet den folgenden Algorithmus, um die Gleichheit zu bestimmen:

  1. Typ Überprüfen Sie: Der Bediener vergleicht zuerst die Typen der beiden Werte. Wenn sich die Typen unterscheiden, gibt es sofort false zurück. Der Typ -Matching geht nur dann zum nächsten Schritt, wenn die Typen identisch sind.

  2. Typ-spezifischer Vergleich:

    • Zahlen:

      • NaN === NaN bewertet false (ein entscheidender Punkt der Divergenz).
      • numerisch identische Werte return true.
      • 0 und -0 werden als gleich angesehen (true).
    • Zeichenfolgen: Charakter-für-Charakter-Vergleich bestimmt Gleichheit. Identische Sequenzen ergeben true; Ansonsten false.

    • booleans: true === true und false === false beide return true. Ansonsten false.

    • Objekte (Arrays und Funktionen enthalten): === Überprüfungen für Referenzgleichheit . Nur wenn beide Werte auf denselben Speicherort (dasselbe Objekt) verweisen, wird true

      zurückgegeben.
    • null und undefined: null === null und undefined === undefined return true. null === undefined ist jedoch false aufgrund von Typunterschieden.


Warum NaN === NaN false

ist

Dies ist eine häufige Quelle der Verwirrung. Die Spezifikation definiert NaN (nicht-a-nummer) als ungleich für sich. Dies liegt daran, dass NaN ein ungültiges oder undefiniertes numerisches Ergebnis darstellt; Der Vergleich von zwei undefinierten Ergebnissen wie gleich fehlt die logische Kohärenz.

Beispiel:

<code class="language-javascript">NaN === NaN; // false</code>
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie NaN oder Number.isNaN(): Object.is() zuverlässig nach

, um
<code class="language-javascript">Number.isNaN(NaN); // true
Object.is(NaN, NaN); // true</code>
Nach dem Login kopieren
Nach dem Login kopieren
zuverlässig zu überprüfen

0 === -0 Warum true

ist 0 Die Spezifikation behandelt -0 und 1 / 0 als gleichwertig, da ihr Verhalten in den meisten mathematischen Operationen nicht zu unterscheiden ist. In bestimmten Szenarien bestehen jedoch subtile Unterschiede (z. B. Infinity ergibt 1 / -0, während -Infinity in Object.is()). Verwenden Sie für Situationen, die Differenzierung erfordern,

:
<code class="language-javascript">NaN === NaN; // false</code>
Nach dem Login kopieren
Nach dem Login kopieren

Objekte und Referenzgleichheit (überarbeitet)

beim Vergleich von Objekten bewertet === Referenzgleichheit . Zwei Objekte mit identischen Inhalten werden nicht als gleich angesehen, es sei denn, sie sind dasselbe Objekt im Speicher:

<code class="language-javascript">Number.isNaN(NaN); // true
Object.is(NaN, NaN); // true</code>
Nach dem Login kopieren
Nach dem Login kopieren

Aber:

<code class="language-javascript">Object.is(+0, -0); // false</code>
Nach dem Login kopieren

Weitere Untersuchung von JavaScript -Grundlagen

Das obige ist der detaillierte Inhalt vonEntschlüsseln des '===' von JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage