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 :