[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/isNaN [Back]  [Original]

isNaN() - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

isNaN()

Baseline Large disponibilit

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() dtermine si une valeur est NaN, en convertissant d'abord la valeur en nombre si ncessaire. Comme la contrainte l'intrieur de la fonction isNaN() peut tre surprenante, vous pouvez prfrer utiliser Number.isNaN().

Dans cet article

Exemple interactif

function milliseconds(x) {
  if (isNaN(x)) {
    return "N'est pas un nombre !";
  }
  return x * 1000;
}

console.log(milliseconds("100F"));
// Rsultat attendu : "N'est pas un nombre !"

console.log(milliseconds("0.0314E+2"));
// Rsultat attendu : 3140

Syntaxe

js
isNaN(value)

Paramtres

value

La valeur tester.

Valeur de retour

true si la valeur donne est NaN aprs avoir t convertie en nombre ; sinon, false.

Description

isNaN() est une proprit fonction de l'objet global.

Pour les valeurs numriques, 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 rsultante est compare NaN.

Ce comportement de isNaN() pour les arguments non numriques peut prter confusion ! Par exemple, une chane vide est convertie en 0, tandis qu'une valeur boolenne 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 rpond ni la question  l'entre est-elle la valeur flottante NaN  ni la question  l'entre n'est-elle pas un nombre .

Number.isNaN() est une faon plus fiable de tester si une valeur est la valeur numrique NaN ou non. Alternativement, l'expression x !== x peut tre utilise, 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() rpond la question  l'entre est-elle fonctionnellement quivalente NaN lorsqu'elle est utilise dans un contexte numrique . Si isNaN(x) retourne false, vous pouvez utiliser x dans une expression arithmtique 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 arithmtiques retourneront NaN (car NaN se propage). Vous pouvez utiliser cela, par exemple, pour tester si un argument d'une fonction est traitable arithmtiquement (utilisable  comme  un nombre), et grer les valeurs qui ne sont pas assimilables un nombre en lanant une erreur, en fournissant une valeur par dfaut, etc. De cette faon, vous pouvez avoir une fonction qui exploite toute la polyvalence offerte par JavaScript en convertissant implicitement les valeurs selon le contexte.

Note : L'oprateur + applique la fois l'addition de nombre et la concatnation de chane de caractres. Ainsi, mme si isNaN() retourne false pour les deux oprandes, l'oprateur + peut toujours retourner une chane de caractres, car il n'est pas utilis comme oprateur arithmtique. Par exemple, isNaN("1") retourne false, mais "1" + 1 retourne "11". Pour tre sr de travailler avec des nombres, contraignez la valeur un nombre et utilisez Number.isNaN() pour tester le rsultat.

Exemples

Notez comment isNaN() retourne true pour des valeurs qui ne sont pas la valeur NaN mais qui ne sont pas des nombres non plus :

js
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true

isNaN(true); // false
isNaN(null); // false
isNaN(37); // false

// Chanes de caractres
isNaN("37"); // false : "37" est converti en nombre 37 qui n'est pas NaN
isNaN("37.37"); // false : "37.37" est converti en nombre 37.37 qui n'est pas NaN
isNaN("37,5"); // true
isNaN("123ABC"); // true : Number("123ABC") est NaN
isNaN(""); // false : la chane vide est convertie en 0 qui n'est pas NaN
isNaN(" "); // false : une chane avec des espaces est convertie en 0 qui n'est pas NaN

// Dates
isNaN(new Date()); // false ; Les objets Date peuvent tre convertis en nombre (timestamp)
isNaN(new Date().toString()); // true ; la reprsentation sous forme de chane d'un objet Date ne peut pas tre analyse comme un nombre

// Tableaux
isNaN([]); // false ; la reprsentation primitive est "", qui se convertit en nombre 0
isNaN([1]); // false ; la reprsentation primitive est "1"
isNaN([1, 2]); // true ; la reprsentation primitive est "1,2", qui ne peut pas tre analyse comme un nombre

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-isnan-number

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page