Maison >interface Web >js tutoriel >Pourquoi ` 0 === -0` est-il évalué à True en JavaScript, alors que `Object.is(-0, 0)` renvoie False ?
La différence et l'égalité de 0 et -0
La spécification ECMAScript 5.1 fait la distinction entre 0 et -0, soulevant la question de savoir pourquoi 0 === -0 est évalué à vrai.
IEEE 754 Standard
JavaScript utilise la norme IEEE 754 pour représenter les nombres. Selon IEEE 754, le zéro signé permet un zéro positif (0) et un zéro négatif (-0). Cette distinction est requise pour l'arithmétique à virgule flottante, car 1/-0 = -∞ et 1/ 0 = ∞.
Algorithme de comparaison d'égalité stricte
Malgré les problèmes techniques distinction, la section 11.9.6 de la spécification définit explicitement le comportement de l'algorithme de comparaison d'égalité stricte pour 0 et -0 :
Raisonnement logique et pratique
Logiquement, il est logique de traiter 0 et -0 comme égaux. Les distinguer compliquerait le code, surtout lorsque l'on travaille avec zéro.
Méthode de comparaison Object.is
ES2015 a introduit Object.is pour des comparaisons plus précises. Object.is fait explicitement 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!