Sobes.tech
Junior

Come verificare se un numero è NaN?

sobes.tech AI

Risposta dell'AI

Utilizzano la funzione isNaN(), che verifica se il valore è "Non un Numero" (Not-a-Number).

// Esempi di utilizzo di isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, poiché 'hello' non può essere convertito in un numero
console.log(isNaN('123'));    // false, poiché '123' può essere convertito nel numero 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, poiché null si converte in 0

// Verifica della conversione di tipi in isNaN()
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Esiste anche il metodo Number.isNaN(), che verifica in modo più rigoroso se il valore è esattamente NaN, senza effettuare conversioni preliminari.

// Esempi di utilizzo di Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, non converte in numero
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Differenze con isNaN() per argomenti non numerici
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

Il confronto tra NaN e se stesso o qualsiasi altro valore restituisce sempre false, tranne quando si utilizza Object.is().

// Caratteristica del confronto con NaN
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Confronto con Object.is()
console.log(Object.is(NaN, NaN)); // true

A seconda del compito, potrebbe essere necessario usare isNaN() (se è importante il controllo dopo la conversione in numero) o Number.isNaN() (per un controllo rigoroso su NaN). Il metodo Number.isNaN() è preferibile per verificare se un valore specifico è esattamente NaN.