Типы Null String Undefined Boolean Number и другие.
В этом уроке по JS мы познакомимся с типами данных, научимся их преобразовывать и поработаем с оператором typeof.
Last updated
В этом уроке по JS мы познакомимся с типами данных, научимся их преобразовывать и поработаем с оператором typeof.
Last updated
В прошлом уроке мы изучали работу с переменными, знаем, что в переменных или константе можно задать определенное значение, некие данные. Так вот, эти данные могут быть определенного типа. Тип - это набор характеристик, значение, которое различает поведение одного типа значения от другого. Простыми словами, если мы хотим использовать значение 58 как число, то и тип данных должен быть числом.
JS является динамически типизированным. То есть тип данных переменной меняется динамически в момент присвоения либо смены её значения. А не в момент объявления.
Например:
Объявляем переменную "userName" далее присваиваем некое значение Алексейка, а потом меняем значение на число 58. Так как же получить текущий тип данных переменных? Получить его можно с помощью оператора typeof. Теперь после каждого нашего действия, будет выводиться консоль нашу переменную вместе с оператором typeof. Тут мы четко видим, что тип данных нашей переменной менялся когда мы присваивали, либо меняли ее значение. Простыми словами - переменная никак не привязана к определённому типу, тип данных присваивается переменной вместе с значением. в JS существует 8 отдельных типов данных. Ряд из них называют примитивными
Так же существуют более сложный тип Object. На самом деле их даже 9, сущ еще тип который вам чуток знаком - это Function. По сути это тот же object выведенные в отдельный тип, для простоты определения типа для фукций. Информация по некоторым типам на столько много, что подробно нужно их изучать отдельно прям, они слишком глобальны, это можно сказать отдельная пара для изучения. Но сегодня, мы поговорим обо всех их, чтобы нам было хотя бы понятно поверхностно, для чего они и что они значат.
Первый тип, неопределенный тип, переменная вернет этот тип данных, если она была объявлена, но ей не было присвоено никакого значения - т.е. она была не определена. Посмотрим на пример:
Объявляем переменную userName, но не присваиваем никакого значения, таким образом получает тип данных Undefined. Далее мы попробуем получить значения и тоже получим Undefined. Т.е. этот тип данных содержит всего одно одноименное значение Undefined и используется только для того, чтобы проверить была ли определена переменная или нет. Вот один из более сложных примеров, где на практике проверяется определена ли переменная или нет:
1 способ проверяем значение переменной. 2 способ проверяет тип данных. На примере видно, что в обоих случаях мы получаем ответ "Переменная НЕ определена" Потому что нигде не была объявлена переменная. === - стравнивает ещё и тип данных. По другому его называют "Строгое равенство"
Null так же как и undefined содержит только одно значение - null Вот один из примеров:
Однако в js Null не является ссылкой на несуществующий объект, либо на нулевым указателям, как это сделано на других языках. Это специальное значение, которое представляет собой "ничего", т.е. пустое место, так что не стоит путать null с undefined. Дело в том, что переменная возвращающая null, определена, просто ее значение будет "ничего" Вот еще один пример:
Где в переменной block я пытаюсь получить некий объект которого не существует, при попытке вывести в консоль, я получаю Null. (добавляем код)
Стоит отметить, что при получении типа данных такой переменной с помощью оператора typeof мы получим тип object. Прикол в том, что это официально признанная ошибка оператора timeof которая тянется еще со времен создания js и до сих пор оставлена для совместимости. Конечно же null не является объектом, это специально значение с отдельным типом данных.
Вообще он должен уже быть вам знаком еще со времен pascal или delphy Boolean – это Булевый или логический тип. Может принимать только два значения: true (истина) и false (ложь).
На примере мы создали переменную willYouMarryMe и значение у нее true. При проверке мы получим веселый смайлик, но стоит поменять на значение false, мы получим грустный смайл.
Так же переменная может сама получать одно из этих значений, например с помощью оператора сравнения. на примере здесь переменной trueOrFalse, я задал некую задачку, что 58 < чем 18. Выводим в консоль и видим false, это не правда и ложь. Но стоит нам заменить это на > и сразу значение в нашей консоли поменяется.
Это уже от логично и так название "число" т.е. числовой тип данных представляет собой значение в виде целых чисел, а так же с плавающей запятой. это мы и можем видеть в примере:
Но не только числа могут быть number, существуют специальные числовые значение такие как infinity и -Infinity
Infinity это математическая бесконечность значение которое больше любого числа, получить его мы можем например делением на ноль. как видим на примере, вы получаем значение infinity, а тип данных number. (добавляем в 58 минус) В -infinity тоже самое, просто у нас отрицательные числа.
Так же есть специальное числовое значение NaN, оно означает вычислительную ошибку. Это результат неправильно, либо неопределённой математической операции.
Если где - то в математическом выражении есть NaN, то результатом вычислений с его участием будет NaN. Если у нас был бы более сложный код, либо функция, то вся бы функция вернула бы нам значение NaN.
Это еще один тип данных, он такой же как integer, как бы логично это не выглядело) Как понятно из названия, он тоже числовой, но поддерживает очень большие числа. Дело в том, что в JS тип данных number не может содержать числа чем 9007199254740991, или меньше, чем -9007199254740991. А BigInt:
он может пригодиться в редких случаях, например при работе с криптографией либо секундомерах которые работают с микросекундами и т д. Он был введен, для того чтобы была возможность работать с числами произвольной длинны и для того, чтобы получить значение такого числа, нужно нашему числу добавить буковку N и таким образом мы получим bigint.
Известный всем, тип данных "строка" Для того, чтобы вывести данный тип данных, нужно взять любое наше значение в кавычки. Уже мы с вами это разбирали, но напомню, что кавычки бываю 3ех типов.
Вы можете пользоваться двойными и одинарными в любых случаях, они имеют одинаковое значение, а вот обратные кавычки, позволяют нам использовать дополнительный функционал и встраивать в строку некие выражения
Например здесь это является ${userAge}. В данном случае я встрил в строку переменную userAge и получил в уже вот такой результат. Строки вообще большая тема, ее тоже нужно разбирать полностью, на нее спокойно уйдет целая пара.
Тип данных объект отличаются от предыдущих примитивных типом, т.к. у них могли быть только простые значения строка или число. Объект же содержит в себе более сложную структуру данных. Объект может быть создан с помощью фигурных скобок:
И содержать в себе набор необязательных свойств. Свойства в JS это пара ключ + значение, разделяются они ":" как у нас на примере это name и название. Свойства между собой, разделяю запятой. Объекты очень важное место в языке JS, они тоже должны быть изучены отдельно.
Символ - это уникальный идентификатор объекта, создаются новые символы с помощью одноименной функции
Чтобы работать с этим типом данных, нужно будет сначала изучить тему объектов, поэтому пока это просто пример как можно его увидеть на маленьком примере.
Уже чуток нам знакомый тип данных, по сути это тот же Object для более простого определения функций. это сделано, так как в JS можно преобразовывать один тип в другой с помощью операторов, либо специальных функций.
Начнем со строкового преобразования, у нас есть переменная userAge, которой присвоено значение 58, это число, тип данных number, в консоли как мы и видим. Далее с помощью специльной функции стринг, мы меняем тип данных этой переменной и теперь значение будет тоже 58, но это уже строка и мы видим, что даже вывод этих значений в консоли разного цвета.
Еще один пример, переменная userTrue, логическая и значение у нее true, это мы видим в консоли, далее мы опять используем специальную функцию string и получаем то же значение true но уже как строку.
Численное преобразование, это тоже самое, но уже в обратном порядке:
Здесь переменная 58 строка, это в консоли видно, далее с помощью функции number мы преобразовываем это значение в число и выводим в консоль. Если мы попытаемся преобразовать строку в число:
Но в этой строке нет вообще никаких чисел, то мы получим NuN
Есть еще один пример, когда у вас идет автоматическое преобразование без использование спец функций.
Например в переменной userAge есть некое выражение, где строка 72 деляться на строку 2, в итогу мы получаем число 36 и тип данных Number.
Так же есть логическое преобразование:
Переменной userAge, число 23, далее мы применяем спец функцию Boolean и теперь, это уже true и теперь тип данных Boolean. хочу отметить, что число 0, вернет false
однако строка, содержавшее число 0, вернет true, т.к. строка не пуста
Если вместо нуля, мы сделаем пробел, то будет тоже самое. Потому что пробел, это тоже символ, любое значение вернет нам true.
ДОМАШКА
Изучить теорию
Какой или какие из вариантов не верны:
//Вариант №1 let userAge = 36; let userInfo = "Фрилансер ${userAge}";
//Вариант №2 let userHeight = 145 / 0; //Вернется значение NaN console.log(userHeight);
//Вариант №3 let userName; //Вернется тип данных Null console.log(typeof userName);
//Вариант №4 let userSize = "45" / "8"; //Вернется тип данных Number console.log(typeof userSize);