Отличие №1!

Когда вы определяете переменную, но не присваиваете ей значение, она автоматически помещает заполнитель, который называется undefined, поэтому вам не нужно делать это вручную, JavaScript сделает это за вас.

Null означает пустое или несуществующее значение.

Null присваивается и явно ничего не означает. в то время как undefined обычно означает, что переменная была объявлена, но еще не определена.

var a;
console.log(a);
// undefined

var b = null;
console.log(b);
// null

Отличие №2!

Null и undefined являются примитивными и ложными значениями. Однако null также является объектом. Интересно, что на самом деле это была ошибка в исходной реализации JavaScript.

var a;
console.log(typeof(a));
// undefined

var b = null;
console.log(typeof(b));
// object

Отличие №3!

Как вы можете видеть, null и undefined разные, но имеют некоторые сходства. Таким образом, имеет смысл, что null не равно строго undefined.

console.log(null !== undefined);
// true

Но, и это может вас удивить, null примерно равно undefined.

console.log(null == undefined);
// true

В JavaScript двойное равенство проверяет нечеткое равенство и предварительное приведение типов. Это означает, что мы сравниваем два значения после приведения их к общему типу.

До новых встреч!