TGViewer
Deep Digital Deep Digital @deepdigital · 1.06K subscribers
Post #261 918
Всем привет!

Сегодня давайте вместе раскроем тайну одного из самых противоречивых аспектов JavaScript: почему typeof null возвращает 'object'. Это путешествие во времена зарождения JavaScript обещает быть увлекательным.

🕵️‍♂️ Разгадываем головоломку. Начало 90-х. JavaScript еще молод и полон потенциала, но в его коде уже заложена эта загадка. Противоречивый вывод typeof null как 'object', хотя, на самом деле, null — это примитив. Звучит как ошибка? Давайте разберемся.

🏛 Код из древности. В самой первой версии JavaScript все данные были упакованы в 32-битные блоки. Эти блоки разделялись на две части: небольшую, где хранился «тег» (маркер), который сообщал о типе данных (1-3 бита). И другую, где хранились сами данные.

Представьте это как ящик, на котором есть этикетка (тег), говорящая, что внутри. А затем само содержимое (данные).

Было пять этикеток:
1. 000: объект. Внутри — ссылка на объект.
2. 1: целое число. Внутри — целое число с 31-битной знаковостью.
3. 010: число с плавающей запятой (double). Внутри — ссылка на такое число.
4. 100: строка. Внутри — ссылка на строку.
5. 110: логическое значение (true или false). Внутри — само логическое значение.

Но два значения были особенными:
— undefined имело числовое значение 230, это число находится вне диапазона обычных целых чисел;
— null было представлено как указатель NULL в машинном коде. Это значит, что у него была метка «объект» и ссылка, равная нулю.

Таким образом, когда мы использовали typeof с null, он видел его как «объект» из-за его метки.

🎭 Время проб и ошибок. Разработчики знали об этой странности, но исправление могло «сломать» старый код, который уже работал в интернете. Итак, они решили оставить все как есть, чтобы не вызвать проблемы.

✨ Совет для начинающих. Чтобы не запутаться при работе с null, всегда используйте «строгое сравнение» (===) с null:
value === null; // возвращает true или false в зависимости от значения.

Теперь вы знаете одну из многих тайн JavaScript и как с ней работать. Оставайтесь на связи для новых интересных историй!
  • 🔥 71
  • ❤ 8
  • 🏆 3
  • 👍 1
  • 😱 1
More from @deepdigital
  1. May 19, 2026Как расти в непростом рынке, масштабировать группу компаний и не терять фокус на клиентах?…
  2. Dec 26, 2025⚡️Подвели итоги 2025 года Chulakov Group Записали подкаст с Олегом Чулаковым — основателем…
  3. Dec 8, 2025Победы на Tagline Awards 2025 🏆 Снова громко напомнили, зачем делаем дизайн — чтобы созда…
  4. Jun 9, 2025Chulakov ⨉ ИТМО 💥 Мы снова в одном из крупнейших IT-вузов России. Альберт Рыбалко, руково…
  5. Jun 6, 2025🏆 Chulakov — № 1 в дизайне по всем рейтингам Безоговорочный лидер по версии крупнейших ан…
  6. May 6, 2025🙌 Вспоминаем, как насыщенно провели время на IT-конференции Merge Были рады стать партнер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →