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!