Sobes.tech
Junior

Podes explicar com mais detalhes as diferenças entre null e undefined em JavaScript?

sobes.tech IA

Resposta da IA

  • undefined:

    • Atribuído a variáveis declaradas, mas não inicializadas com um valor.
    • Valor padrão para parâmetros de funções aos quais não foram passados argumentos.
    • Obtém-se ao tentar aceder a uma propriedade ou elemento de matriz que não existe.
    • Tipo de dado — undefined.
  • null:

    • É um valor especial atribuído explicitamente a uma variável para indicar "ausência de valor".
    • Representa a ausência intencional de qualquer objeto ou valor primitivo.
    • Tipo de dado — object (isto é um erro histórico em JavaScript, mas assim é).

As principais diferenças na tabela:

Característica undefined null
Origem Implícito (por padrão) Explícito (atribuído pelo programador)
Propósito Declarado, mas não atribuído um valor Ausência intencional de valor
Tipo de dado (typeof) undefined object
Contexto booleano false false
Igualdade (==) null == undefined (true) null == undefined (true)
Igualdade (===) null === undefined (false) null === undefined (false)

Exemplo:

let a; // Declarada, mas não inicializada -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Acesso a propriedade inexistente -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parâmetro name não passado -> undefined

let b = null; // Atribuído explicitamente null
console.log(b); // null

let c = {};
c.data = null; // A propriedade data é atribuída a null
console.log(c.data); // null

console.log(typeof a); // undefined
console.log(typeof b); // object
console.log(null == undefined); // true
console.log(null === undefined); // false