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

Number : méthode statique 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 septembre 2015.

La méthode statique Number.isNaN() détermine si la valeur passée est la valeur numérique NaN, et retourne false si l'entrée n'est pas de type Number. C'est une version plus robuste de la fonction native isNaN().

Exemple interactif

function typeOfNaN(x) {
  if (Number.isNaN(x)) {
    return "Number NaN";
  }
  if (isNaN(x)) {
    return "NaN";
  }
}

console.log(typeOfNaN("100F"));
// Sortie attendue : "NaN"

console.log(typeOfNaN(NaN));
// Sortie attendue : "Number NaN"

Syntaxe

js
Number.isNaN(value)

Paramètres

value

La valeur qu'on souhaite comparer à NaN.

Valeur de retour

La valeur booléenne true si la valeur donnée est un nombre avec la valeur NaN. Sinon, false.

Description

La fonction Number.isNaN() fournit un moyen pratique de vérifier l'égalité avec NaN. Notez que vous ne pouvez pas tester l'égalité avec NaN en utilisant soit les opérateurs == ou ===, car contrairement à toutes les autres comparaisons de valeurs en JavaScript, celles-ci évaluent à false chaque fois qu'un opérande est NaN, même si l'autre opérande est également NaN.

Étant donné que x !== x n'est vrai que pour NaN parmi toutes les valeurs possibles en JavaScript, Number.isNaN(x) peut également être remplacé par un test x !== x, bien que ce dernier soit moins lisible.

Contrairement à la fonction globale isNaN(), la méthode Number.isNaN() ne convertit pas de force le paramètre en nombre. Cela permet de passer en toute sécurité des valeurs qui sont normalement converties en NaN mais qui ne sont pas réellement la même valeur que NaN. Cela signifie également que seules les valeurs de type Number qui sont également NaN retournent true.

Exemples

Utiliser isNaN()

js
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true
Number.isNaN(37); // false

Différence entre Number.isNaN() et la fonction native isNaN()

Number.isNaN() n'essaie pas de convertir le paramètre en nombre, donc les valeurs non numériques retournent toujours false. Les exemples suivants retournent tous false :

js
Number.isNaN("NaN");
Number.isNaN(undefined);
Number.isNaN({});
Number.isNaN("blabla");
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");

La fonction native isNaN() convertit son paramètre en un nombre :

js
isNaN("NaN"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN("blabla"); // true
isNaN(true); // false, c'est converti en 1
isNaN(null); // false, c'est converti en 0
isNaN("37"); // false, c'est converti en 37
isNaN("37.37"); // false, c'est converti en 37.37
isNaN(""); // false, c'est converti en 0
isNaN(" "); // false, c'est converti en 0

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# sec-number.isnan

Compatibilité des navigateurs

Voir aussi