Ambos representam "nenhum valor", mas com intenção e origem diferentes.
Ambos representam "nenhum valor", mas com intenção e origem diferentes.
undefined: a ausência de um valor, geralmente definida pelo mecanismo JavaScript — uma variável declarada-mas-não-atribuída, uma propriedade de objeto ausente, um parâmetro de função que você não passou, ou uma função sem return.null: um valor "vazio" intencional que você atribui para dizer "deliberadamente nada aqui".let a; // undefined — declared, not assigned
const obj = {};
obj.missing; // undefined — property doesn't exist
function f() {}
f(); // undefined — no return
const b = null; // null — you chose to empty it
null == undefined; // true — loose equality treats them as equal
null === undefined; // false — different types
typeof undefined; // "undefined"
typeof null; // "object" (historical bug)
const value = input ?? "default"; // defaults on EITHER null or undefined
user?.address?.city; // optional chaining — undefined if any link is null/undefined
Use null para limpar intencionalmente um valor (p. ex. "nenhum usuário selecionado"), e trate undefined como "não definido ainda". Os operadores ?? (nullish coalescing) e ?. (optional chaining) lidam com ambos simultaneamente, e é por isso que são tão amplamente usados.
Uma biblioteca de perguntas de entrevista de TI com respostas detalhadas — de Júnior a Sênior.
Doar