JavaScript

В JS существует 8 типов данных:

7 типов данных являются примитивами:
Boolean (Булев, Логический тип)
Null (Null тип )
Undefined (Неопределенный тип)
Number (Число)
String (Строка)
BigInt
Symbol (в ECMAScript 6)
и 8-й тип данных Object (Объект)
Я не пойму, почему ПРОСТО нельзя было сделать 3 типа данных - числовой, строковый (буквы) и символьный? Подскажите, пожалуйста.
Вот смотрите: Булин (это буквы), налл (цифра), андэфайнд (буквы и/или цифры), намбэр это понятно, стрин это понятно, БигИнт (цифры), сымбол это понятно, обджэкт (буквы и цифры). Вот зачем было тогда заморачиваться, если все эти "типы данных" состоят из букв и цифр?
"Вот смотрите" - полный бред, особенно про object. Неужели такую еботу можно придумать, будучи имевшим\имевшей хоть какое-то дело с объектами и булами в реальном коде? Или ты из безруких диванных теоретиков которые хелловорлда сами не написали?...
АА
Адилхан Анешов
92 464
Лучший ответ
Может вместо программирования займешься танцами, например? Очень прошу.
Alpamis Allanazarov
Alpamis Allanazarov
63 236
Александр Владимирович И летала бы себе.
Чтобы эти вопросы сами собой отпали, нужно учить язык чуть дольше 2-х дней)))

Строки "true", "undefined" надо как-то отличать от реальных значений true, undefined.

null - специальный тип, указывающий на ничто. Формально 0 — не ничто, а число 0 ))
Роман Макодзеба "Строки "true", "undefined" надо как-то отличать от реальных значений true, undefined" - и в чем проблема их отличия? По-сути null это слово, которое обозначает ничто, так что это можно и не выделять в "специальный тип".
ой как вы не правы, фактически для машины все является числами, даже ваши могучие и лагающие строки (которые ничто иное как массив символов, вы даже в своей логике допустили избыточность при том ущемив объект коим является массив)

но вернемся к действительности.
Boolean особый тип который может иметь только два состояния, иногда числа используются как boolean(0 - false, остально true). Почемуже не строка? ресурсы машины ограничены и память в том числе. а сколько занимает символ? байт! и при том может иметь 256 состояний. а вы предлагаете на два состояния гробить 4-5 байт. это ебантиизм в чистом виде.
null - это такое состояние, которое сообщает о пустоте, т. е. объект точно инициализирован и имеет пустое состояние.
undefined - это такое состояние в котормо может быть только неинициализированный объект.
эти два состояния схожи, но если вы знаете что такое инициализация разница будет очевидна.
далее у нас BigInt. как сказано выше ресурсы ограничены. а архитектура ЦП заперта в рамках физики. посему создать шустрые ЦП которые могут оперировать числами разрядностью более 64(53 в JS) и не занимать пару комнат проблематично и очень дорого. но такие числа однако существуют и с ними тоже надо уметь работать (пусть и в ущерб производительности, но вас судя по всему это не каснется). для этих чисел и существует BigInt.
и наконец object - вы говорите зачем он нужет ведь это набор символов и цифр. а действительно давайте вместо вот такого кода
object.field = 10;
будет такой (потоков и объектов нет, только числа и строки и операции с ними)
b = a;
b = b << (a_size - a_offset_field);
b = b >>> (a_size - a_offset_field);
a = a >> a_offset_field;
a = a & 0xE0000000000000; //обычное число 0 в 53 бита, ваше счастье что в js 0b нет
a = a | 0xA; // 10 в hex
a = a << a_offset_field;
a = a | b;

как вам? удобно? мне нормально, пару деньков и вообще как рыба в воде буду. да вот только подобные вам ныть будут что хотим проще и удобнее. вам дали проще и удобнее. массивы указатели типы а вам опять не так. РАДУЙТЕСЬ что не на ассемблере пишете где кроме чисел строк и инструкций ничего нету и то даже там помоему есть примитивные объекты

кстати а теперь давайте представим как машина видела бы вашу версию boolean:

как есть сейчас
true = 0x00 = 0b00000000 (да мы занимаем байт ибо js в c-ях это реально бит)
false = 0x01 = 0b00000001

как хотите вы
true = "true" = 0b01110100011100100111010101100101
false = "false" = 0b0110011001100001011011000111001101100101

если вы не понимате ущербности хотя бы своего boolean то я поддерживаю Ярослава
Роман Макодзеба Могли бы проще сказать - потому что это связано с единицами измерения информации.