console.info(typeof(null)) //Object
Typeof(null) → Ошибка в том, что он возвращает тип Object, в то время как ожидается, что он вернет тип null. Эта ошибка - ситуация, пришедшая из первых версий JS, и это изменение состояния оставлено таким образом, потому что оно вызовет много проблем позже.
Если мы раскроем эту тему немного шире,
Как я уже упоминал в теме Типы данных JavaScript . JS состоит из 2 типов данных.
Примитивные типы и типы объект/функция. Примитивные типы - это типы данных, которые не могут быть изменены.
XY- 7-WZЕсли мы рассмотрим примитивные типы;
console.info(typeof(true)) //boolean console.info(typeof(null)) //object console.info(typeof(undefined)) //undefined console.info(typeof(1)) //number console.info(typeof('aaa')) //string console.info(typeof(Symbol("foo"))) //symbol console.info(typeof(BigInt(9007199254740991))) //bigint
Типы объектов и функций
console.info(typeof({})) //object console.info(typeof([])) //object console.info(typeof(new Set())) //object console.info(typeof(new Date())) //object console.info(typeof(new Map())) //object console.info(typeof((x)=>x+1)) //function
Typeof не дает вам подробного описания различных объектов, производных от типа object, он только говорит вам, что это объект. Чтобы подойти к нужному вам объекту более детально, необходимо посмотреть на прототип в конструкторе с instanceof , сделав ряд проверок.
Давайте после стольких подробностей перейдем к главному событию.
Typeof(null) -> object
Первая версия JS, которая описана в статье блога История "typeof null" , была разработана с помощью макроса C, в то время как первые 3 бита 32-битного поля в переменных определяют тип, следующие 29 бит - это часть, которая хранит данные. Как видно ниже, с помощью 3 битов можно создать 8 различных комбинаций типов.
В первое время JS хранятся следующие 5 типов данных.
Тот, что внизу, может быть либо 1, либо 1, что позволяет использовать 31-битное знаковое целое число, не тратя лишние 2 бита на определение Number. Или если он начинается с 0, то для определения типа используются 3 бита.
Кроме этого, существует 2 специальных типа
Для того чтобы код typeof правильно нашел Null, он должен был иметь ссылку, отличную от указателя NULL 0 в C. Но когда NULL-указатель 0 ссылается на 0, а распознавание объекта происходит через 0, null и объект смешиваются при определении типа.
Для продолжения этой статьи или для доступа к другим статьям в группе статей, вы можете перейти по этой ссылке .
JavaScript Başından Beri Bir Hatayı Bünyesinde mi Barındırıyor ? was originally published in Frontend Development With JS
on Medium, where people are continuing the conversation by highlighting and responding to this story.23.03.2023 11:48
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
23.03.2023 08:01
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои навыки работы с React.
23.03.2023 02:41
Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и чувствовал, что больше не хочу смотреть на длинный код CSS с нарушенной структурой.
22.03.2023 13:41
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По мере того как растут ожидания клиентов в отношении лучшего UI/UX, увеличивается конкуренция и возрастает потребность в производительности разработчиков,...
22.03.2023 08:55
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
22.03.2023 08:25
В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.