У чому різниця між null і undefined?
undefined
Що це: Значення «не визначено». Означає, що змінна існує, але в ній нічого не зберігається.
Коли з'являється:
- Якщо змінна оголошена, але не ініціалізована:
javascript
let user;
console.log(user); // undefined- Якщо функція нічого не повертає:
javascript
function greet() {}
console.log(greet()); // undefined- Якщо звертаєшся до неіснуючої властивості об'єкта:
javascript
const obj = {};
console.log(obj.age); // undefined
undefinedзазвичай створюється автоматично рушієм JS, а не вручну.
null
Що це: Значення «порожньо» або «нічого немає», яке призначає сам розробник.
Коли використовувати:
- Коли хочеш явно показати, що значення відсутнє:
javascript
let user = null; // поки немає користувача- Коли потрібно очистити змінну:
javascript
user = null; // видаляємо посилання на об'єкт- При роботі з БД або API, де значення поля може бути «порожнім»:
javascript
user.email = null; // користувач не вказав email
null- це свідоме «ніщо», аundefined- випадкове «ніщо».
Порівняння null і undefined
| Властивість | undefined | null |
|---|---|---|
Тип (typeof) | "undefined" | "object" (помилка в специфікації, але історично так залишилося) |
| Присвоюється автоматично | Так | Ні |
| Присвоюється вручну | Рідко | Часто |
| Значення за умовчанням | У неініціалізованих змінних | Ні |
| Використовується для «значення відсутнє» | Ні | Так |
| Використовується для «значення не задано» | Так | Ні |
Як їх порівнювати
javascript
null == undefined // true → нестроге порівняння (вони рівні за значенням)
null === undefined // false → строге порівняння (різні типи)Рекомендації щодо використання
- Використовуй
undefinedдля:- неініціалізованих змінних;
- відсутніх аргументів функцій;
- перевірок «чи є значення» (
if (value === undefined)).
- Використовуй
nullдля:- навмисного обнулення значень;
- позначення «значення відсутнє» в логіці програми чи API;
- сумісності з JSON і базами даних.
Приклад:
javascript
let user; // undefined - змінна оголошена, але порожня
user = null; // null - явно вказали, що користувача немаєКоротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.