Heim > Web-Frontend > js-Tutorial > Warum wird „0 === -0' in JavaScript als „True' ausgewertet, während „Object.is(-0, 0)' „False' zurückgibt?

Warum wird „0 === -0' in JavaScript als „True' ausgewertet, während „Object.is(-0, 0)' „False' zurückgibt?

Linda Hamilton
Freigeben: 2024-11-22 07:04:11
Original
524 Leute haben es durchsucht

Why Does ` 0 === -0` Evaluate to True in JavaScript, While `Object.is(-0,  0)` Returns False?

Der Unterschied und die Gleichheit von 0 und -0

Die ECMAScript 5.1-Spezifikation unterscheidet zwischen 0 und -0, was die Frage aufwirft, warum 0 === -0 ergibt „true“.

IEEE 754 Standard

JavaScript verwendet den IEEE 754-Standard zur Darstellung von Zahlen. Gemäß IEEE 754 ermöglicht die vorzeichenbehaftete Null positive Nullen (0) und negative Nullen (-0). Diese Unterscheidung ist für die Gleitkomma-Arithmetik erforderlich, da 1/-0 = -∞ und 1/ 0 = ∞.

Strikter Gleichheitsvergleichsalgorithmus

Trotz der technischen Details Unterscheidung definiert Abschnitt 11.9.6 der Spezifikation explizit das Verhalten des strikten Gleichheitsvergleichsalgorithmus für 0 und -0:

  • Wenn x 0 und y -0 ist, gib true zurück.
  • Wenn x -0 und y 0 ist, gib true zurück.

Logische und praktische Begründung

Logisch gesehen ist es sinnvoll, 0 und -0 als zu behandeln gleich. Eine Unterscheidung zwischen ihnen würde den Code komplizieren, insbesondere wenn mit Null gearbeitet wird.

Object.is-Vergleichsmethode

ES2015 führte Object.is für genauere Vergleiche ein. Object.is unterscheidet explizit zwischen 0 und -0:

Object.is(-0, +0); // false
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum wird „0 === -0' in JavaScript als „True' ausgewertet, während „Object.is(-0, 0)' „False' zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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