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