Sobes.tech
Junior

Cum verifici dacă un număr este NaN?

sobes.tech AI

Răspuns de la AI

Se utilizează funcția isNaN(), care verifică dacă valoarea nu este un număr (Not-a-Number).

// Exemple de utilizare a isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, deoarece 'hello' nu poate fi convertit în număr
console.log(isNaN('123'));    // false, deoarece '123' poate fi convertit în numărul 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, deoarece null se convertește în 0

// Verificarea conversiei de tipuri
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Există și metoda Number.isNaN(), care verifică mai strict dacă valoarea este exact NaN, fără conversie preliminară.

// Exemple de utilizare a Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, nu convertește
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Diferența față de isNaN() pentru argumente non-numerice
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

Compararea NaN cu sine sau cu orice altă valoare returnează întotdeauna false, cu excepția cazului în care se utilizează Object.is().

// Caracteristica comparației cu NaN
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Compararea cu Object.is()
console.log(Object.is(NaN, NaN)); // true

În funcție de sarcină, poate fi necesar să se utilizeze isNaN() (dacă verificarea după conversia în număr este importantă) sau Number.isNaN() (pentru o verificare strictă a NaN). Metoda Number.isNaN() este preferabilă pentru verificarea precisă dacă o valoare este exact NaN.