Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La propriété globale NaN est une valeur représentant une quantité qui n'est pas un nombre (Not a Number en anglais).
La même valeur numérique que Number.NaN.
| Écrivable | Non |
| Énumérable | Non |
| Configurable | Non |
NaN est une propriété de l'objet global. En d'autres termes, c'est une variable dans la portée globale.
Dans les navigateurs modernes, NaN est une propriété non configurable et non modifiable. Même lorsque ce n'est pas le cas, il faut éviter de la surcharger.
Il existe cinq types d'opérations différents qui retournent NaN :
NaN et ses comportements n'ont pas été inventés par JavaScript. Sa sémantique en arithmétique à virgule flottante (y compris le fait que NaN !== NaN) est définie par IEEE 754 (angl.). Les comportements de NaN incluent :
NaN fait aussi partie des valeurs équivalentes à faux en JavaScript.
Pour savoir si une valeur est NaN, utilisez Number.isNaN() ou isNaN() pour déterminer le plus clairement possible si une valeur est NaN — ou, puisque NaN est la seule valeur qui se compare inégal à elle-même, vous pouvez effectuer une auto-comparaison comme x !== x.
Cependant, notez la différence entre isNaN() et Number.isNaN() : la première retourne true si la valeur est actuellement NaN, ou si elle va devenir NaN après avoir été convertie en nombre, tandis que la seconde retourne true uniquement si la valeur est actuellement NaN :
Pour la même raison, l'utilisation d'une valeur BigInt générera une erreur avec isNaN() et non avec Number.isNaN() :
De plus, certaines méthodes de tableau ne peuvent pas trouver NaN, tandis que d'autres le peuvent. En particulier, celles qui recherchent un index (indexOf(), lastIndexOf()) ne peuvent pas trouver NaN, tandis que celles qui recherchent une valeur (includes()) le peuvent :
Pour plus d'informations sur NaN et sa comparaison, voir Comparaison d'égalité et identité.
Il est possible de produire deux nombres à virgule flottante ayant des représentations binaires différentes mais qui sont tous deux NaN, car dans le codage IEEE 754 (angl.), tout nombre à virgule flottante avec un exposant 0x7ff et une mantisse non nulle est NaN. En JavaScript, il est possible de manipuler les bits à l'aide des tableaux typés.
NaN se propage à travers les opérations mathématiques, il est donc généralement suffisant de tester la présence de NaN une seule fois à la fin du calcul pour détecter les conditions d'erreur. Le seul cas où NaN est silencieusement échappé est lors de l'utilisation de l'exponentiation avec un exposant de 0, ce qui retourne immédiatement 1 sans tester la valeur de la base.
| ECMAScript® 2027 Language Specification # sec-value-properties-of-the-global-object-nan |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 5 mars 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.