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