Назад к вопросам
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