nulo e indefinido

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.

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