La méthode Number.isNaN()
permet de déterminer si la valeur passée en argument est NaN
. Cette version est plus robuste que la méthode de l'objet global isNaN
.
Syntaxe
Number.isNaN(valeurÀTester)
Paramètres
valeurÀTester
- La valeur qu'on souhaite comparer à
NaN
.
Valeur de retour
Un booléen qui indique si la valeur fournie en argument est NaN
.
Description
Les deux opérateurs d'égalité, ==
et ===
, renvoient false
pour vérifier que NaN
est NaN. La fonction Number.isNaN
est nécessaire pour distinguer ce cas. Le résultat de cette comparaison sera différent avec les autres méthodes de comparaisons en JavaScript.
En effet, la fonction globale isNaN
convertit l'argument en un nombre. Number.isNaN
ne convertit pas l'argument. Cela signifie qu'on peut passer des valeurs qui, normalement, seraient converties en NaN, mais qui ne sont pas NaN. Cela signifie également que, uniquement lorsque la méthode sera utilisée avec des nombres qui valent NaN
, elle renverra true
.
Exemples
Number.isNaN(NaN); // true Number.isNaN(Number.NaN); // true Number.isNaN(0 / 0) // true // tout le reste renverra : false Number.isNaN(undefined); Number.isNaN({}); Number.isNaN(true); Number.isNaN(null); Number.isNaN(37); Number.isNaN("37"); Number.isNaN("37.37"); Number.isNaN(""); Number.isNaN(" "); Number.isNaN("NaN"); Number.isNaN("blabla"); // ex : cette valeur aurait rendu true avec la méthode isNaN de l'objet global
Prothèse d'émulation (polyfill)
Number.isNaN = Number.isNaN || function(value) { return typeof value === "number" && isNaN(value); }
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Number.isnan' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript 2017 Draft (ECMA-262) La définition de 'Number.isnan' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | 25 | 15 (15) | Pas de support | (Oui) | 9 |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | ? | 15.0 (15) | Pas de support | Pas de support | 9 |