0 et -0 sont-ils identiques en JavaScript ?
Malgré la distinction faite dans la spécification ECMAScript 5.1, 0 et -0 sont évalués comme true en utilisant l'égalité stricte en JavaScript.
Pourquoi cela ?
JavaScript adopte la norme IEEE 754 pour la représentation numérique. Selon cette norme, le zéro signé peut exister sous deux formes : 0 (zéro positif) et -0 (zéro négatif). Cependant, la division par 0 ou -0 donne respectivement ∞ et -∞, plutôt qu'indéfini.
Techniquement, cette distinction entre 0 et -0 est cruciale. Cependant, JavaScript fournit une exception dans son algorithme d'égalité stricte. La section 11.9.6 indique explicitement que 0 et -0 sont traités comme égaux dans les comparaisons d'égalité stricte.
Cette exception s'aligne sur la notion logique de traiter 0 et -0 comme équivalents. De plus, cela simplifie le développement en éliminant le besoin de prendre en compte cette distinction dans le code.
Remarque :
ES2015 a introduit Object.is comme nouvelle méthode de comparaison. Contrairement aux opérateurs d'égalité lâche et stricte, Object.is fait expressément la distinction entre 0 et -0 :
Object.is(-0, +0); // false
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!