O JavaScript tem várias maneiras de indicar a ausência de um valor. Esta página
descreve as duas maneiras mais comuns: os tipos de dados null
e undefined
.
null
A palavra-chave null
representa uma ausência de valor definida intencionalmente. null
é um primitivo, embora o operador typeof
retorne que null
é um objeto.
Esse é um erro que ocorreu
da primeira versão do JavaScript e foram deixadas intencionalmente
sem correção para evitar a interrupção do comportamento esperado na Web.
typeof null
> object
Você pode definir uma variável como null
com a expectativa de que ele reflita um valor atribuído a ela
em um script ou um valor explicitamente ausente. Também é possível atribuir o null
a uma referência existente para limpar um valor anterior.
undefined
undefined
é um valor primitivo atribuído a variáveis.
que foram declaradas ou ao valor resultante de uma operação que
não retorna um valor significativo. Por exemplo, isso pode acontecer quando você declara
uma função no console do desenvolvedor de um navegador:
function myFunction() {}
> undefined
Uma função retorna explicitamente undefined
quando a instrução return
não retorna nenhum valor.
(function() {
return;
}());
> undefined
Comparação de null
e undefined
Embora undefined
e null
tenham alguma sobreposição funcional, eles têm
para finalidades diferentes. Basicamente, null
representa um valor.
intencionalmente definido como "em branco", e undefined
representa a falta de qualquer valor atribuído.
null
e undefined
são leiramente iguais, mas não estritamente iguais.
O operador de igualdade flexível converte operandos de tipos diferentes em um booleano.
valores, tornando null
e undefined
ambos false
. O operador de igualdade estrita
considera operandos de diferentes tipos de dados como desiguais.
null == undefined
> true
null === undefined
> false
Ao contrário da palavra-chave reservada null
, undefined
é uma propriedade do
objeto global. Foi um projeto
tomada no início do desenvolvimento do JavaScript e permitiu que navegadores legados
substituir undefined
completamente. Em navegadores modernos, ainda é possível usar
undefined
como um identificador em escopos não globais, substituindo o valor dele em
escopo dessa declaração. Nunca use undefined
como identificador. Ela
pode causar comportamentos inesperados e provavelmente confundir futuros mantenedores de
sua base de código.
Teste seu conhecimento
O que o typeof null
retorna?
undefined
primitive
string
object