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.