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 fonction isNaN() détermine si une valeur est NaN, en convertissant d'abord la valeur en nombre si nécessaire. Comme la contrainte à l'intérieur de la fonction isNaN() peut être surprenante, vous pouvez préférer utiliser Number.isNaN().
La valeur à tester.
true si la valeur donnée est NaN après avoir été convertie en nombre ; sinon, false.
isNaN() est une propriété fonction de l'objet global.
Pour les valeurs numériques, isNaN() teste si le nombre vaut NaN. Lorsque l'argument passé à la fonction isNaN() n'est pas de type nombre, la valeur est d'abord contrainte à un nombre, puis la valeur résultante est comparée à NaN.
Ce comportement de isNaN() pour les arguments non numériques peut prêter à confusion ! Par exemple, une chaîne vide est convertie en 0, tandis qu'une valeur booléenne est convertie en 0 ou 1 ; ces deux valeurs ne sont intuitivement « pas des nombres », mais elles ne valent pas NaN, donc isNaN() retourne false. Ainsi, isNaN() ne répond ni à la question « l'entrée est-elle la valeur flottante NaN » ni à la question « l'entrée n'est-elle pas un nombre ».
Number.isNaN() est une façon plus fiable de tester si une valeur est la valeur numérique NaN ou non. Alternativement, l'expression x !== x peut être utilisée, et aucune de ces solutions n'est sujette aux faux positifs qui rendent le isNaN() global peu fiable. Pour tester si une valeur est un nombre, utilisez typeof x === "number".
La fonction isNaN() répond à la question « l'entrée est-elle fonctionnellement équivalente à NaN lorsqu'elle est utilisée dans un contexte numérique ». Si isNaN(x) retourne false, vous pouvez utiliser x dans une expression arithmétique comme s'il s'agissait d'un nombre valide qui n'est pas NaN. Si isNaN(x) retourne true, x sera contraint à NaN et la plupart des expressions arithmétiques retourneront NaN (car NaN se propage). Vous pouvez utiliser cela, par exemple, pour tester si un argument d'une fonction est traitable arithmétiquement (utilisable « comme » un nombre), et gérer les valeurs qui ne sont pas assimilables à un nombre en lançant une erreur, en fournissant une valeur par défaut, etc. De cette façon, vous pouvez avoir une fonction qui exploite toute la polyvalence offerte par JavaScript en convertissant implicitement les valeurs selon le contexte.
Note : L'opérateur + applique à la fois l'addition de nombre et la concaténation de chaîne de caractères. Ainsi, même si isNaN() retourne false pour les deux opérandes, l'opérateur + peut toujours retourner une chaîne de caractères, car il n'est pas utilisé comme opérateur arithmétique. Par exemple, isNaN("1") retourne false, mais "1" + 1 retourne "11". Pour être sûr de travailler avec des nombres, contraignez la valeur à un nombre et utilisez Number.isNaN() pour tester le résultat.
Notez comment isNaN() retourne true pour des valeurs qui ne sont pas la valeur NaN mais qui ne sont pas des nombres non plus :
| ECMAScript® 2027 Language Specification # sec-isnan-number |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 26 févr. 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.