NaN==NaN

Lors d’un challenge de code, on me confronte au problème suivant sur Not a Number :

Quelle est la sortie pour cette ligne ?

alert(NaN==NaN);

La réponse est False.

On ne peut pas utiliser les opérateurs d’égalité (== et ===)  pour tester une valeur par rapport à NaN. Il faut utiliser Number.isNaN() ou isNaN() à la place d’après la documentation Javascript.

Je conseille pour ma part la méthode Object.is() qui pour le code suivant donnera True

alert(Object.is(NaN,NaN));

 

C’est due au fait que NaN (« Not a Number », en français « pas un nombre ») est, en informatique, une valeur ou un symbole produit par le résultat d’une opération arithmétique invalide, quand les nombres sont représentés en virgule flottante, suivant le standard IEEE 754.

NaN est une valeur qui a des propriétés uniques par rapport à tous les nombres. En particulier, toute comparaison « égal », « supérieur », « inférieur », « supérieur ou égal », « inférieur ou égal » impliquant NaN donne la réponse booléenne « False », alors que toute comparaison « différent » donne le résultat « True ».

Cela conduit même à ce que la comparaison « NaN==NaN » donne la réponse « False ». C’est la seule valeur ayant cette propriété.

Sources : 

Partager
Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

20 − neuf =

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.