Ключевое слово null в JavaScript имеет специальное назначение - оно используется для обозначения отсутствия ожидаемого значения.
var answer = prompt("Введите Ваше имя", "");
document.write(answer);
Метод prompt() вернёт значение null, если в запросе нажать кнопку "Отмена", сообщая тем самым, об отсутствии ожидаемого значения. Если ничего не вводить и нажать кнопку "ОК", метод вернёт пустую строку "". Оператор typeof для значения null возвращает строку "object", показывая тем самым, что значение null является специальным "пустым" объектом.
alert(typeof null);
Когда значение null используется в числовом контексте оно преобразуется в значение 0, а в строковом контексте - в строку "null".
alert(2 - null);
alert(null + " ложь");
Значение undefined указывает на изначальное отсутствие какого-либо значения. Оно возвращается при обращении либо к переменной, которая была объявлена, но которой никогда не присваивалось значение, либо к свойству объекта, которого не существует или к несуществующему элементу массива. Значение undefined возвращается функциями, которые не имеют возвращаемого значения, и присваивается параметрам функции, которым не были переданы аргументы при вызове функции.
var bar;
document.write(bar);
Идентификатор undefined является именем предопределённой глобальной переменной (а не ключевым словом, как null), которая инициализирована значением undefined. Переменная undefined доступна только для чтения. Оператор typeof для значения undefined возвращает строку "undefined", показывая тем самым, что оно является единственным значением этого специального типа.
alert(typeof undefined);
Когда значение undefined используется в числовом контексте оно преобразуется в значение NaN, а в строковом контексте – в строку "undefined".