Qual a diferença entre null e undefined?

Null e undefined são dois valores especiais em JavaScript que indicam a ausência de valor.

A diferença principal entre null e undefined é o seu significado semântico.

A variável com valor undefined significa que ela foi declarada, mas não foi atribuído nenhum valor a ela. Por exemplo:

let nome; console.log(nome); // Output: undefined

Já a variável com valor null significa que ela foi declarada e explicitamente definida para não ter nenhum valor. O null é atribuído quando se deseja indicar que a variável está vazia ou não tem valor. Por exemplo:

let sobrenome = null; console.log(sobrenome); // Output: null

Em resumo, undefined é um valor atribuído pelo JavaScript quando não há uma atribuição explícita, enquanto null é um valor que pode ser atribuído a uma variável quando se quer representar a ausência de valor.

Outra diferença é que undefined é um tipo primitivo em JavaScript, enquanto null é um objeto especial. Portanto, typeof null retorna “object”, enquanto typeof undefined retorna “undefined”.

É importante mencionar que é uma boa prática verificar se uma variável é igual a null ou undefined antes de usá-la, para evitar erros como “TypeError: Cannot read property ‘x’ of undefined”. Por exemplo:

if (nome === null) { // lógica para tratar quando a variável contém null }

if (typeof sobrenome === ‘undefined’) { // lógica para tratar quando a variável contém undefined }