PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Что вернет typeof для null?

Основы языка

`typeof null` возвращает строку `'object'`. Это известная историческая ошибка JavaScript, сохранённая для обратной совместимости.

Почему так

В самой первой реализации JavaScript значения хранились с тегом типа в младших битах. У объектов тег был 000, а null представлялся как нулевой указатель — те же биты 000. Поэтому typeof null определяло его как объект.

typeof null;      // 'object' — баг
typeof {};        // 'object'
typeof undefined; // 'undefined'

Ошибку не стали исправлять: это сломало бы огромное количество существующего кода.

Как правильно проверять null

typeof для этого не подходит — нужно строгое сравнение:

if (value === null) { /* точно null */ }

// проверить и null, и undefined сразу
if (value == null) { /* null или undefined */ }

Практический вывод

  • Не используйте typeof x === 'object' для проверки на объект — массивы и null тоже дадут 'object'.
  • Надёжная проверка на объект:
value !== null && typeof value === 'object';

Коротко для собеседования

typeof null === 'object' — историческая ошибка из-за представления null нулевым указателем с тем же тегом, что у объектов. Не исправлена ради совместимости. Для проверки на null используют value === null, а не typeof.

Другие вопросы раздела