Разница между null и undefined в JavaScript
Аксель Раушмайер написал статью про отличия между undefined
и null
— "undefined vs. null revisited".
Спецификация описывает эти значения следующим образом: undefined
используется как значение по умолчанию в неинициализированных переменных; null
используется как значение, которое явно устанавливается разработчиком как признак отсутствия любого объектного значения.
Для выбора между undefined
и null
Аксель использует правило: undefined
— это метазначение, которое существует на уровень выше кода программы, и оно означает, что что-то не существует или отсутствует; null
— существует на уровне кода программы, и оно означает, что что-то "отключено".
Мне не очень нравится метафора с "отключением" с помощью null
, но нравится идея undefined
как метазначения. Как бы то ни было, статья полезная, рекомендую почитать.