null - литерал, пустое значение, используйте его в коде для пустых значений.
undefined - свойство глобального объекта, с начальным значением одноименного типа.
Переменная не имеющая присвоенного значения обладает типом
undefined. Функции без
return возвращают
undefined. Все использование
undefined в коде должно сводиться к проверке на это значение и только, то есть:
// Так писать не надо
var x = undefined;
foo(undefined, someValue):
// Так можно
var x = null;
foo(null, someValue);
if (someValue === undefined) {
doSomething()
}
Почему undefined является идентификатором а null литералом чем они отличаются ?
undefined не является идентификатором(именем переменной), но может использоваться в качестве него, так как не является зарезервированным словом.
console.log(typeof undefined === 'undefined'); // true
var undefined = 'new value';
console.log(typeof undefined === 'undefined'); // false
Подробней о nullПодробней о undefinded