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