Heim > Artikel > Web-Frontend > Warum behandelt JavaScript 0 und -0 in „==='-Vergleichen als gleich, aber nicht mit „Object.is'?
Unterscheidung zwischen 0 und -0 in JavaScript
Während die ECMAScript 5.1-Spezifikation numerisch zwischen 0 und -0 unterscheidet, stellt sich die Frage, warum das Vergleich 0 === -0 wird in JavaScript als wahr ausgewertet.
IEEE 754 Standard- und vorzeichenbehaftete Nullen
JavaScript nutzt den IEEE 754-Standard für die Zahlendarstellung, der die Existenz von zwei Nullen zulässt: 0 (positive Null) und -0 (negative Null). In IEEE 754 wird Null normalerweise als 0 kodiert, aber sowohl 0 als auch -0 sind gültige Darstellungen.
Strikter Gleichheitsvergleichsalgorithmus
Abschnitt 11.9.6 der ECMA -262-Spezifikation definiert den strikten Gleichheitsvergleichsalgorithmus. Für numerische Vergleiche heißt es ausdrücklich, dass 0 und -0 bei strikten Gleichheitsvergleichen als gleich behandelt werden:
Wenn x 0 und y −0 ist, wird „true“ zurückgegeben.
Wenn x −0 und y 0 ist, wird true zurückgegeben.
Daher können 0 und -0 unterschiedlich sein Numerisch gesehen werden sie in strikten Gleichheitsvergleichen aus praktischen und logischen Gründen als gleich angesehen.
Object.is-Vergleich
ES2015 hat die Object.is-Methode für einen genaueren Vergleich eingeführt. Object.is unterscheidet explizit zwischen -0 und 0 und gibt beim Vergleich false zurück:
Object.is(-0, 0); // false
Zusammenfassend lässt sich sagen, dass JavaScript den IEEE 754-Standard verwendet und 0 und -0 in strengen Gleichheitsvergleichen als gleich behandelt, um Codierungskonventionen zu vereinfachen. Die Object.is-Methode ermöglicht jedoch bei Bedarf differenziertere Vergleiche.
Das obige ist der detaillierte Inhalt vonWarum behandelt JavaScript 0 und -0 in „==='-Vergleichen als gleich, aber nicht mit „Object.is'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!