Sobes.tech
Junior

Comment vérifier si un nombre est NaN?

sobes.tech IA

Réponse de l'IA

Utilisent la fonction isNaN(), qui vérifie si la valeur est "Not-a-Number" (NaN).

// Exemples d'utilisation de isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, car 'hello' ne peut pas être converti en nombre
console.log(isNaN('123'));    // false, car '123' peut être converti en nombre 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, car null est converti en 0

// Vérification de la conversion de types avec isNaN()
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Il existe aussi la méthode Number.isNaN(), qui vérifie de manière plus stricte si la valeur est exactement NaN, sans conversion préalable.

// Exemples d'utilisation de Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, ne convertit pas en nombre
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Différences avec isNaN() pour les arguments non numériques
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

Comparer NaN avec lui-même ou avec toute autre valeur retourne toujours false, sauf avec Object.is().

// Particularité de la comparaison avec NaN
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Comparaison avec Object.is()
console.log(Object.is(NaN, NaN)); // true

Selon la tâche, il peut être nécessaire d'utiliser isNaN() (si la vérification après conversion en nombre est importante) ou Number.isNaN() (pour une vérification stricte de NaN). La méthode Number.isNaN() est préférable pour vérifier si une valeur est précisément NaN.