Оба представляют "отсутствие значения", но с разными намерением и происхождением.
Оба представляют "отсутствие значения", но с разными намерением и происхождением.
undefined: отсутствие значения, обычно устанавливаемое движком JavaScript — объявленная-но-неинициализированная переменная, отсутствующее свойство объекта, параметр функции, который вы не передали, или функция без return.null: намеренное "пустое" значение, которое вы присваиваете, чтобы сказать "здесь намеренно ничего".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
Используйте null для намеренной очистки значения (напр. "нет выбранного пользователя"), и рассматривайте undefined как "пока не установлено". Операторы ?? (nullish coalescing) и ?. (optional chaining) обрабатывают оба варианта одновременно, именно поэтому они так широко используются.
Библиотека вопросов для IT-собеседований с подробными ответами — от Junior до Senior.
Поддержать