Sobes.tech
Junior

Como verificar se um número é NaN?

sobes.tech IA

Resposta da IA

Utilizam a função isNaN(), que verifica se o valor é "Não é um Número" (Not-a-Number).

// Exemplos de uso de isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, pois 'hello' não pode ser convertido em número
console.log(isNaN('123'));    // false, pois '123' pode ser convertido em número 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, pois null é convertido para 0

// Verificação de conversão de tipos em isNaN()
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Existe também o método Number.isNaN(), que verifica de forma mais rigorosa se o valor é exatamente NaN, sem realizar conversão prévia.

// Exemplos de uso de Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, não realiza conversão para número
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Diferença de isNaN() com argumentos não numéricos
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

Comparar NaN consigo mesmo ou com qualquer outro valor sempre retorna false, exceto quando se usa Object.is().

// Particularidade na comparação com NaN
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Comparação usando Object.is()
console.log(Object.is(NaN, NaN)); // true

Dependendo da tarefa, pode ser necessário usar isNaN() (se a verificação após conversão para número for importante) ou Number.isNaN() (para uma verificação estrita de NaN). O método Number.isNaN() é preferível para verificar se um valor específico é exatamente NaN.