Просто чтобы добавить мои взгляды -
Переменная, которая объявлена только и нигде не используется, удаляется оптимизирующим компилятором в случае скомпилированных языков, таких как C ++ [или в IDE помечено предупреждение]. В конечном итоге это означает, что переменная не существует, потому что ее память никогда не выделяется.
В случае интерпретатора JavaScript, [я предполагаю], переменная рассматривается как существующая только с той точки, где ей дано значение. До этого момента его тип является «неопределенным», и для него не выделяется память. И, таким образом, его тип не определен.
Нуль в javascript - это значение, которое представляет адрес, но этот адрес еще ни на что не указывает [несуществующая ссылка]. Тем не менее, это значение.