Heim >Web-Frontend >js-Tutorial >Wie unterscheiden sich 0 und -0 in JavaScript, obwohl sie durch strikte Gleichheit als gleich behandelt werden?

Wie unterscheiden sich 0 und -0 in JavaScript, obwohl sie durch strikte Gleichheit als gleich behandelt werden?

DDD
DDDOriginal
2024-11-19 21:30:03753Durchsuche

How Do  0 and -0 Differ in JavaScript, Despite Strict Equality Treating Them as Equal?

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!

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