Ответ
В JavaScript null и undefined представляют разные концепции отсутствия значения.
| Критерий | undefined |
null |
|---|---|---|
| Тип | typeof undefined === 'undefined' |
typeof null === 'object' (историческая особенность языка) |
| Значение по умолчанию | Значение неинициализированных переменных, отсутствующих свойств объекта, параметров функции, которым не передали аргумент. | Явно присваиваемое значение, обозначающее "ничего", "пусто", "значение отсутствует". |
| Использование | Системное (движок JS). | Программное (разработчик). |
Примеры:
// undefined (системное)
let a;
console.log(a); // undefined
const obj = {};
console.log(obj.nonExistentProp); // undefined
function foo(x) { console.log(x); }
foo(); // undefined
// null (программное)
let b = null; // Явно указываем, что значения нет
const response = await fetch('/api/data');
const data = await response.json();
if (data.error) {
data.result = null; // Явно обнуляем результат при ошибке
}
Проверка:
// Строгая проверка (рекомендуется)
if (value === undefined) { /* только для undefined */ }
if (value === null) { /* только для null */ }
// Проверка на "nullish" (null или undefined) - ES2020
if (value == null) { /* true для null И undefined (но осторожно с ==) */ }
if (value === null || value === undefined) { /* явная и безопасная проверка */ }
const result = value ?? 'default'; // Оператор нулевого слияния (Nullish Coalescing)
Ключевое: undefined обычно означает, что значение ещё не было определено, в то время как null — это намеренное указание на отсутствие какого-либо объектного значения.
Видео-ответы
▶
▶
▶
▶
▶