Sobes.tech
Junior

Можеш ли по-подробно да обясниш разликите между null и undefined в JavaScript?

sobes.tech AI

Отговор от AI

  • undefined:

    • Присвоява се на променливи, които са обявени, но не са инициализирани с стойност.
    • Стойност по подразбиране за параметри на функции, на които не са предадени аргументи.
    • Получава се при опит за достъп до несъществуващо свойство на обект или елемент на масив.
    • Тип данни — undefined.
  • null:

    • Специална стойност, която се присвоява явно на променлива, за да се обозначи "липса на стойност".
    • Представлява умишлено отсъствие на всякакъв обект или примитивна стойност.
    • Тип данни — object (това е историческа грешка в JavaScript, но така е).

Основните разлики в таблицата:

Характеристика undefined null
Произход Неявен (по подразбиране) Явен (присвоен от разработчика)
Назначение Обявена, но не присвоена стойност Умишлено отсъствие на стойност
Тип данни (typeof) undefined object
Логически контекст false false
Равенство (==) null == undefined (истина) null == undefined (истина)
Строго равенство (===) null === undefined (лъжа) null === undefined (лъжа)

Пример:

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