Оператор typeof возвращает тип объекта для null в JavaScript из-за исторических причин. 14
В первой версии языка значения переменных хранились в 32-битных ячейках. 2 В нижних битах хранились метки типа данных, из которых было пять вариантов: 12
Null в первой версии языка был представлением указателя на NULL. 12 Так как в JavaScript не было указателей, null обозначал «ничего» и представлялся всеми нулями. 1
Когда интерпретатор JavaScript читал null, он рассматривал первые 3 бита как тип «object». 1
Это поведение считается ошибкой, которая не исправлена из-за необходимости сохранения обратной совместимости существующего кода с новыми версиями языка. 2