Dicas de Programação - Qual a diferença entre NaN, null e undefined no Javascript?
Colaboração: Ricardo Takemura
Data de Publicação: 18 de fevereiro de 2016
O NaN
é um resultado de uma operação ou de uma função que não conseguiu retornar um número real válido. Exemplo:
var a = parseInt("aaaa"); var b = 0/0;
null
é quando o valor de uma variável esta setada como vazia:
var c = null;
O undefined
é quando uma variável não tem um valor definido ou uma variável não esta definida:
var d; alert(typeof(e));
Utilizando o operador de comparação os resultados serão:
Para a = parseInt("aaaa") ou b = 0/0
a == Number.NaN -> false (????) a === Number.NaN -> false (????) a == a -> false (????) a === a -> false (????) isNaN(a) -> true
As demais comparações serão false, pois a variável "a" possui um valor.
Para c = null
c == null -> true c === null -> true c == undefined -> true c === undefined -> false
Para d = undefined
d == null -> true d === null -> false d == undefined -> true d === undefined -> true
Variável "e" não definido
typeof(e) == "undefined" -> true typeof(e) === "undefined" -> true
As demais comparações serão false, pois o typeof retorna string.