Назад к вопросам
Junior
82
questionbank
Можешь подробнее рассказать о различиях между null и undefined в JavaScript?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
-
undefined:- Присваивается переменным, которые были объявлены, но не инициализированы значением.
- Является значением по умолчанию для параметров функций, которым не были переданы аргументы.
- Получается при попытке доступа к несуществующему свойству объекта или элементу массива.
- Тип данных —
undefined.
-
null:- Является специальным значением, явно присваиваемым переменной для обозначения "отсутствия значения".
- Представляет собой намеренное отсутствие какого-либо объекта или примитивного значения.
- Тип данных —
object(это историческая ошибка JavaScript, но так есть).
Основные различия в таблице:
| Характеристика | undefined |
null |
|---|---|---|
| Происхождение | Неявное (по умолчанию) | Явное (присваивается разработчиком) |
| Назначение | Объявлена, но не присвоено значение | Намеренное отсутствие значения |
Тип данных (typeof) |
undefined |
object |
| Boolean контекст | false |
false |
Равенство (==) |
null == undefined (true) |
null == undefined (true) |
Равенство (===) |
null === undefined (false) |
null === undefined (false) |
Пример:
let a; // Объявлена, но не инициализирована -> undefined
console.log(a); // undefined
const obj = {};
console.log(obj.prop); // Доступ к несуществующему свойству -> undefined
function greet(name) {
console.log(name);
}
greet(); // Параметр name не передан -> undefined
let b = null; // Явно присвоено null
console.log(b); // null
let c = {};
c.data = null; // Свойству data присвоено 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