В чем разница между null и undefined?
Основы языка
`null` и `undefined` оба означают «нет значения», но с разным смыслом: undefined — значение не задано системой, null — намеренно установленное отсутствие значения.
undefined
Появляется автоматически:
- Объявленная, но не инициализированная переменная.
- Отсутствующее свойство объекта.
- Функция без
return. - Не переданный аргумент.
let x;
console.log(x); // undefinednull
Присваивается разработчиком осознанно как «значение отсутствует».
let user = null; // пока пользователя нетСравнение
null == undefined; // true — нестрогое равенство
null === undefined; // false — разные типы
typeof undefined; // 'undefined'
typeof null; // 'object' — историческая ошибкаНа практике
- Проверить оба сразу:
value == null(ловит иnull, иundefined). - Значения по умолчанию:
??срабатывает и наnull, и наundefined:
const name = user.name ?? 'Гость';Коротко для собеседования
undefined — «значение не задано» (по умолчанию от движка), null — «намеренно пусто» (от программиста). Нестрого равны (==), но имеют разные типы. Проверка value == null покрывает оба.