Укрывает ли 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.
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.