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
Linda HamiltonOriginal
2024-11-22 07:04:11514Durchsuche

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

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!

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