Укрывает ли JavaScript ошибку с самого начала?

RedDeveloper
02.01.2023 20:26
Укрывает ли JavaScript ошибку с самого начала?
Photo by Björn on Unsplash

ИСТОРИЯ JAVASCRIPT

Укрывает ли JavaScript ошибку с самого начала?

Почему typeof(null) возвращает объект. Это ошибка?

console.info(typeof(null)) //Object

Typeof(null) → Ошибка в том, что он возвращает тип Object, в то время как ожидается, что он вернет тип null. Эта ошибка - ситуация, пришедшая из первых версий JS, и это изменение состояния оставлено таким образом, потому что оно вызовет много проблем позже.

Если мы раскроем эту тему немного шире,

Как я уже упоминал в теме Типы данных JavaScript . JS состоит из 2 типов данных.

Как я уже упоминал в теме Типы данных JavaScript  JS состоит из 2 типов данныхJavaScript'deki Veri Türleri

Примитивные типы и типы объект/функция. Примитивные типы - это типы данных, которые не могут быть изменены.

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 которая описана в статье блога История "typeof null"  была разработана

В первое время JS хранятся следующие 5 типов данных.

  • 1: int. Данные 31-битное знаковое целое число.
  • 000: объект. Данные - это указатель на объект.
  • 010: двойной. Данные - это адрес ссылки на двойное число с плавающей точкой.
  • 100: string. Данные - это ссылка на строку.
  • 110: boolean. Данные - это само булево значение.

Тот, что внизу, может быть либо 1, либо 1, что позволяет использовать 31-битное знаковое целое число, не тратя лишние 2 бита на определение Number. Или если он начинается с 0, то для определения типа используются 3 бита.

Кроме этого, существует 2 специальных типа

  • undefined: (JSVAL_VOID) находится вне целочисленного диапазона от -2 до 30.
  • Если null: (JSVAL_NULL), то указатель NULL машинного кода принимается в качестве ссылки с новым 0.

Давайте рассмотрим код TypeOf.

Для того чтобы код typeof правильно нашел Null, он должен был иметь ссылку, отличную от указателя NULL 0 в C. Но когда NULL-указатель 0 ссылается на 0, а распознавание объекта происходит через 0, null и объект смешиваются при определении типа.

Для того чтобы код typeof правильно нашел Null он должен был иметь ссылку отличную отTypeof Check ( https: //2ality. com/2013/10/typeof-null.html )

Continue Reading 😃

Для продолжения этой статьи или для доступа к другим статьям в группе статей, вы можете перейти по этой ссылке .

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.
Конечные и Readonly классы в PHP
Конечные и Readonly классы в PHP

23.03.2023 11:48

В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.

От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React

23.03.2023 08:01

Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои навыки работы с React.

БЭМ: Конвенция об именовании CSS
БЭМ: Конвенция об именовании CSS

23.03.2023 02:41

Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и чувствовал, что больше не хочу смотреть на длинный код CSS с нарушенной структурой.

Революционная веб-разработка ServiceNow
Революционная веб-разработка ServiceNow

22.03.2023 13:41

В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По мере того как растут ожидания клиентов в отношении лучшего UI/UX, увеличивается конкуренция и возрастает потребность в производительности разработчиков,...

Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?

22.03.2023 08:55

Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.

Конфигурация Jest в angular
Конфигурация Jest в angular

22.03.2023 08:25

В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.