Я для себя нашел одно применение .
undefined - значит , что значение не задано , нет его и тд , а
null , просто пустота ( все это грубо говоря ) и если нам надо делать проверку , задано ли значение переменной например :
let a = null;
console.log(a);
Мы получим
null , следовательно переменная у нас есть со значение
null , а если мы напишем так:
let a = undefined;
console.log(a);
Мы получим
undefined . И тут вот не понятно , то ли у переменной
"а" значение ровно
undefined , то ли такая переменная вообще не существует. То же самое касамое и свойств в объектах и тд. При отладке не понятно , мы имеем значение равное
undefined или такой перменной/свойтсва не существует. Чтобы избежать таких "недопониманий" при отладке и лучше/корнектнее отлавливать ошибки , присваивайте пустым значениям
null . Как-то так , мой опыт и мое понимание, если где ошибаюсь , пусть поправят )