Number.isNaN / isNaN în JavaScript

Numere și matematică Toate browserele (Number.isNaN: ES2015)

Verifică dacă o valoare este NaN („nu este un număr”), rezultatul unui calcul sau al unei conversii eșuate.

Sintaxă
Number.isNaN(valoare)
isNaN(valoare)

Ce face Number.isNaN / isNaN

NaN apare când un calcul nu are rezultat numeric: Number("abc"), 0 / 0, Math.sqrt(-1). Particularitatea lui: NaN nu este egal nici cu el însuși, deci x === NaN este mereu false.

Number.isNaN returnează true doar dacă valoarea este chiar NaN. Funcția globală veche isNaN transformă întâi valoarea în număr, așa că dă true și pentru texte ca "abc". Folosește Number.isNaN, iar dacă vrei să verifici un text, transformă-l explicit cu Number().

Parametri

Parametru Descriere
valoare Valoarea verificată.

Ce returnează

true sau false.

Exemple

Exemplul 1: Cele două variante

console.log(Number.isNaN(NaN), isNaN(NaN));
console.log(Number.isNaN("abc"), isNaN("abc"));
console.log(Number.isNaN(undefined), isNaN(undefined));
console.log(Number.isNaN("12"), isNaN("12"));

Rezultat

true true
false true
false true
false false

Exemplul 2: De ce nu merge === NaN

const rezultat = Number("12 lei");

console.log(rezultat);
console.log(rezultat === NaN);
console.log(Number.isNaN(rezultat));

Rezultat

NaN
false
true

Greșeli frecvente

  • Compari cu === NaN. Comparația este mereu falsă; folosește Number.isNaN(x).
  • Folosești isNaN("") ca să verifici un câmp gol. Textul gol devine 0, deci rezultatul este false.

Comenzi înrudite

  • Number.isFinite / isFinite: Verifică dacă o valoare este un număr obișnuit: nici NaN, nici Infinity sau -Infinity.
  • parseInt / Number: Transformă un text în număr: parseInt pentru întregi, parseFloat pentru zecimale, Number pentru conversie strictă.
  • Number.isInteger / isSafeInteger: Verifică dacă o valoare este un număr întreg (și dacă este întreg fără pierdere de precizie).