Heim >Web-Frontend >js-Tutorial >Wie unterscheiden sich 0 und -0 in JavaScript, obwohl sie durch strikte Gleichheit als gleich behandelt werden?
Die Unterscheidung zwischen 0 und -0 in ECMAScript 5.1
Die ECMAScript 5.1-Spezifikation unterscheidet explizit zwischen 0 und -0, obwohl sie als ausgewertet wird im Vergleich derselbe Wert. Diese Unterscheidung ergibt sich aus der Implementierung von Gleitkommazahlen in JavaScript mithilfe des IEEE 754-Standards.
Der IEEE 754-Standard erfordert aus technischen Gründen im Zusammenhang mit numerischen Operationen und der Division durch Null sowohl 0 als auch -0. Trotz dieser technischen Unterscheidung behandelt der strikte Gleichheitsvergleich in JavaScript 0 und -0 als gleich.
Gemäß dem in der Spezifikation ECMAScript 5.1 definierten strikten Gleichheitsvergleichsalgorithmus wird der Vergleich durchgeführt, wenn beide Operanden Zahlen sind Gibt true zurück, auch wenn einer 0 und der andere -0 ist. Dieser Sonderfall ist im Algorithmus explizit definiert:
- If x is +0 and y is −0, return true. - If x is −0 and y is +0, return true.
Dies ist aus praktischen Gründen möglich, da die Unterscheidung zwischen 0 und -0 möglicherweise eine besondere Behandlung im JavaScript-Code erfordern würde. Um sie explizit zu unterscheiden, kann die in ES2015 eingeführte Vergleichsmethode Object.is verwendet werden, da sie beim Vergleich von 0 mit -0 false zurückgibt.
Das obige ist der detaillierte Inhalt vonWie unterscheiden sich 0 und -0 in JavaScript, obwohl sie durch strikte Gleichheit als gleich behandelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!