Maison >interface Web >js tutoriel >Pourquoi JavaScript traite-t-il 0 et -0 comme égaux malgré leur représentation distincte ?

Pourquoi JavaScript traite-t-il 0 et -0 comme égaux malgré leur représentation distincte ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-02 04:49:17677parcourir

Why Does JavaScript Treat  0 and -0 as Equal Despite Their Distinct Representation?

Enquête sur la nature de 0 : 0 et -0 sont-ils identiques ?

La spécification ECMAScript 5.1 a défini 0 et -0 comme étant distincts entités. Cela soulève la question : pourquoi alors 0 === -0 renvoie vrai ?

IEEE 754 dévoile l'existence de zéros signés

JavaScript utilise la norme IEEE 754 pour représentent des nombres. La norme introduit le concept de « zéro signé », où -0 et 0 sont reconnus. Il s'agit d'une variante de la droite numérique réelle étendue, permettant l'existence de différentes interprétations de l'infini (1/−0 = −∞ et 1/ 0 = ∞).

Distinction théorique, égalité pratique

Bien que 0 et -0 soient théoriquement distincts dans la représentation Javascript, la comparaison stricte d'égalité L'algorithme de la section 11.9.6 exige explicitement que 0 et -0 soient considérés comme égaux à des fins de comparaison. Cette décision a été prise pour simplifier le codage et éviter une complexité inutile.

Une note sur Object.is

Avec l'introduction d'ES2015, une nouvelle méthode de comparaison a été introduite : Object .est. Il fait explicitement la distinction entre -0 et 0, comme dans Object.is(-0, 0); // FAUX. Cependant, cette méthode n'est généralement recommandée que pour des cas précis où la distinction entre les zéros signés est cruciale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn