Різниця між null i undefined - це класичне запитання на позицію junior-розробника. По своїй суті вони схожі і означають, що значення немає , але якщо копнути трошки глибше, різниця між ними стає очевидною. Отже, розберемо їх по черзі:
undefined
Цей тип даних означає, що значення не задано. Тобто, коли ми створюємо змінну і не присвоюємо значення, доступаємося до поля обʼєкта, якого не існує, чи банально - функція, яка не повертає значення явно, завжди повертає undefined.
null
Він означає порожнє значення, і в цілому він схожий на undefined, з однією важливою відмінністю - null не існує в природі JS і може зʼявитися як значення тільки тоді, коли розробник явно його задав.
Наприклад, в базі даних не знайдено продукту за ID, і ви явно повертаєте null, тим самим даєте зрозуміти, що ви шукали і нічого не знайшли, тому в якості значення підставили null.