NaN - Isso não é um número no JavaScript

Números / Tutorial JavaScript

NaN é a abreviação de Not a Number, que traduzido significa "não é um número". Apesar do nome, ele é tecnicamente um valor numérico especial que indica o resultado de uma operação matemática inválida ou indefinida. Em JavaScript, NaN é um valor do tipo number. Vamos explorar alguns exemplos:

// tentativa de subtração de número por string
let n = 10 - 'João' // resulta em NaN

// tentativa de multiplicação entre arrays
let a = [1, 2, 3] * ['a', 'b', 'c'] // resulta em NaN

// tentativa de conversão de string para número
parseInt('Maria') // resulta em NaN

Todos os exemplos acima resultam em uma operação matemática inválida, retornando como resultado o valor NaN.

Propriedades do NaN

  1. NaN é único: Ele é o único valor em JavaScript que não é igual a si mesmo. Por exemplo:

    console.log(NaN === NaN) // false
    
  2. Tipo de NaN: Apesar de representar "não é um número", o tipo de NaN é number:

    console.log(typeof(NaN)) // "number"
    

Validando se o valor é NaN

Para verificar se um valor é NaN, utilize a função isNaN(). Ela testa o valor e retorna true se for NaN, ou false caso contrário. Exemplo:

let resultado = 10 - 'João'
if (isNaN(resultado)) {
  console.log('A variável "resultado" não é válida.')
}

Atenção ao isNaN()

A função isNaN() tenta converter o valor para um número antes de verificar se é NaN. Isso pode levar a resultados inesperados. Por exemplo:

console.log(isNaN('abc')) // true, pois 'abc' não pode ser convertido para número
console.log(isNaN('123')) // false, pois '123' é convertido para o número 123

Para uma verificação mais precisa, use Number.isNaN(), que não realiza conversões:

console.log(Number.isNaN('abc')) // false
console.log(Number.isNaN(NaN))   // true

Conclusão

O valor NaN é uma parte importante do JavaScript para lidar com operações matemáticas inválidas. Entender como ele funciona e como validá-lo corretamente é essencial para evitar comportamentos inesperados em seu código.