7 типов данных являются примитивами:
Boolean (Булев, Логический тип)
Null (Null тип )
Undefined (Неопределенный тип)
Number (Число)
String (Строка)
BigInt
Symbol (в ECMAScript 6)
и 8-й тип данных Object (Объект)
Я не пойму, почему ПРОСТО нельзя было сделать 3 типа данных - числовой, строковый (буквы) и символьный? Подскажите, пожалуйста.
Вот смотрите: Булин (это буквы), налл (цифра), андэфайнд (буквы и/или цифры), намбэр это понятно, стрин это понятно, БигИнт (цифры), сымбол это понятно, обджэкт (буквы и цифры). Вот зачем было тогда заморачиваться, если все эти "типы данных" состоят из букв и цифр?
JavaScript
В JS существует 8 типов данных:
"Вот смотрите" - полный бред, особенно про object. Неужели такую еботу можно придумать, будучи имевшим\имевшей хоть какое-то дело с объектами и булами в реальном коде? Или ты из безруких диванных теоретиков которые хелловорлда сами не написали?...
Может вместо программирования займешься танцами, например? Очень прошу.
Александр Владимирович
И летала бы себе.
Чтобы эти вопросы сами собой отпали, нужно учить язык чуть дольше 2-х дней)))
Строки "true", "undefined" надо как-то отличать от реальных значений true, undefined.
null - специальный тип, указывающий на ничто. Формально 0 — не ничто, а число 0 ))
Строки "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 то я поддерживаю Ярослава
но вернемся к действительности.
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 то я поддерживаю Ярослава
Роман Макодзеба
Могли бы проще сказать - потому что это связано с единицами измерения информации.
Похожие вопросы
- [HTML/CSS/JS] Как сохранять изменённые в .js данные оффлайн-сервера локально?
- Какую структуру данных вы используете в разработке js приложений? Дерево? или Множество объектов? пояснение внутри
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Js фреймворки, что полезного можно для себя найти?
- В чем цель фреймворков js web?
- Приколы с преобразованием типов в JS
- Почему jQuery методы популярнее js методов при общении с ДоМ?
- ПОЧЕМУ JS ТАКОЙ НЕПОНЯТНЫЙ???
- вопрос по JS. " простой ()";
- Порядок изучени JavaScripta. Путь к Node.js. Нужен совет по обучению от программистов