Maison >interface Web >js tutoriel >En quoi 0 et -0 diffèrent-ils en JavaScript, malgré une stricte égalité qui les traite comme égaux ?

En quoi 0 et -0 diffèrent-ils en JavaScript, malgré une stricte égalité qui les traite comme égaux ?

DDD
DDDoriginal
2024-11-19 21:30:03763parcourir

How Do  0 and -0 Differ in JavaScript, Despite Strict Equality Treating Them as Equal?

La distinction entre 0 et -0 dans ECMAScript 5.1

La spécification ECMAScript 5.1 fait explicitement la distinction entre 0 et -0, bien qu'elles soient évaluées comme la même valeur en comparaison. Cette distinction découle de l'implémentation des nombres à virgule flottante en JavaScript utilisant la norme IEEE 754.

La norme IEEE 754 requiert à la fois 0 et -0 pour des raisons techniques liées aux opérations numériques et à la division par zéro. Cependant, malgré cette distinction technique, la comparaison d'égalité stricte en JavaScript traite 0 et -0 comme égaux.

Selon l'algorithme de comparaison d'égalité stricte défini dans la spécification ECMAScript 5.1, si les deux opérandes sont des nombres, la comparaison sera renvoie vrai même si l'un est 0 et l'autre est -0. Ce cas particulier est explicitement défini dans l'algorithme :

- If x is +0 and y is −0, return true.
- If x is −0 and y is +0, return true.

Cela tient compte de raisons pratiques, car la différenciation entre 0 et -0 nécessiterait potentiellement une manipulation particulière dans le code JavaScript. Pour les distinguer explicitement, la méthode de comparaison Object.is introduite dans ES2015 peut être utilisée, car elle renvoie false lors de la comparaison de 0 à -0.

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