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
Number.isNaN(value)
Paramètres
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()
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 :
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 :
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> |