Примитивы и приведение типов
Примитивы - это простые данные, описывание сущность. Не имеют вложенных значений, но сами ими часто являются, например как элементы массивов или как значения свойств объект
Примитивные данные (ПРИМИТИВЫ)

Их 7, но в повседневной работе мы чаще взаимодействуем с 5, а именно:
string - любое значение, заключенное в одинарные (
''
), двойные (""
) или обратные (``) кавычки, которые еще называют шаблонной строкой.number - любое числовое значение до максимально безопасного цельно численного значения ((2 в степени 53 ) - 1), что соответствует значению
9007199254740991
(это довольно много, но не для программирования и работы с данными), значения больше этого берет под свое крыло уже другой примитив - bigint, у него даже специальный объект для этого выделен, с одноименным названиемBigInt
. У этого объекта уже есть свойства и методы (рассмотрим далее), в одном из его свойствMIN_SAFE_INTEGER
хранится это максимальное значение. Кроме чисел, есть еще два значения, принадлежащие этому типу данных, этоNaN
(not a number) иInfinity
(бесконечность).boolean - два значения: true и false.
undefined - одноименное единственное значение -
undefined
.null - одноименное и также единственное значение -
null
. ВАЖНО: null возвращает object при проверке типа данных, но это не относит его к семейству объектов JavaScript. Это "специально допущенная ошибка" в JavaScript.symbol - уникальный, неизменяемый тип данных. Используется в качестве идентификатора свойств объектов. Будем его видеть, когда начнутся манипуляции Js над Html.
bigint - числовые значения больше максимально безопасного.
Примитивы:
не являются объектами;
не имеют свойств и методов (только их конструкторы:
String
Number
Boolean
иSymbol
);immutable - не изменяются (можно перезаписать примитив в другую переменную, но его самого перезаписать или изменить нельзя);
Конструкторы примитивов
👍Конструктор примитива, будь то
String
Number
Boolean
или Symbol является объектом-обёрткой.
И как мы уже знаем, примитивы не имеют свойств и методов, а объекты имеют.
Так и наши конструкторы наделены целыми наборами свойств и методов, к которым мы можем обратиться через точку после имени самого конструктора.
Рассмотрим наиболее частоиспользуемые из них, а с полным перечнем можно будет ознакомиться по ссылкам на MDN, указанным в имени каждого конструктора.
Итак, поехали!
конструктор String
👍Вызов конструктора String(value) преобразует полученное значение value к типу данных string.
👍Вызов конструктора String(value) преобразует полученное значение value к типу данных string.👍Строки представляют собой последоватеьность проиндексированных символов. Индексация начинается с 0, то есть, первый символ строки имеет индекс 0.
str[num]
обращение к символу в строке по значению индекса, переданного через num
str.length
свойство, наследуемое конструктором String от конструктора Function, хранит длину строчного значения в value (общее количество всех символов с учетом пробелов)
str.localeCompare(nextStr)
возвращает число, указывающее, должна данная строка находится до, после или в том же самом месте, что и строка, переданная через параметр, при сортировке этих строк.
str.charAt(num)
получает доступ к конкретному символу в строке, где num - это переданное числовое значение, указывающее на индекс искомого символа в строке
str.substring(x, y)
вернет часть строки, начиная с переданного индекса x
, заканчивая индексом, стоящим перед переданным y
str.indexOf(symb)
вернет ближайший от начала индекс символа, если он найден в строке или -1, если такого символа в строке нет
конструктор Number
👍Вызов конструктора Number(value) преобразует полученное значение value к типу данных number.
👍Вызов конструктора Number(value) преобразует полученное значение value к типу данных number.Максимальное целое число, которое можно безопасно использовать в JavaScript.
Определяет, является ли переданное значение значением NaN
как одноименный глобальный метод parseFloat() извлекает из полученного значения value
дробное число
как одноименный глобальный метод parseInt() извлекает из полученного значения value
целое число
конструктор Boolean
👍Вызов конструктора Boolean(value) преобразует полученное значение value к типу данных boolean.
👍Вызов конструктора Boolean(value) преобразует полученное значение value к типу данных boolean.Приведение типов
Это процесс преобразования типа данных одного и того же значения из одного в другой, например: число с типом данных string
можно преобразовать в число с типом данных number
или в булевое значение с типом boolean
.
Типы пребразования (приведения типов):
строковое;
численное;
булевое.
Способы приведения
type casting - явное (при передаче значения в вызов конструктора String(), Number() или Boolean())
не явное
Когда происходит неявное приведение типов?
При нестрогом сравнении ( 1
== true
)При использовании логических и математических операторов, например при выполнении математических операций:
( 1 + '1' ) вернет 11, это конкатенация и приведение к строке
( 2 * '5' ) вернет 10 ( 9 / '3' ) вернет 3 ( 5 - '1' ) вернет 4 - это вычисления и приведение к числу
( !undefined ) вернет true - это приведение к булю и возврат его противоположного значения
( 1 && false ) вернет false, это приведение к булю и проверка обоих булевых значений на true, получаем результат false, потому что не оба значения true
В условии ветвления ( if(value) { statements }, где value будет приведено к булевому true или false и это логично, ведь ветвление работает по принципу, если условие верно, то есть выполняется, то выполни указанные инструкции, в противном случае ничего не делай)
Давай визуализируем это в таблицу:
строковое
String(value)
value + "value"
численное
Number(value)
+value
булевое
Boolean(value)
!value
или !!value
А теперь рассмотрим примеры приведения конкретных значений:
"user"
string
-
NaN
true
"
2kg"
string
-
NaN
true
"100"
string
-
100
true
"1"
string
-
1
true
"0"
string
-
0
true
" "
string
-
0
true
""
string
-
0
false
1
number
"1"
-
true
Infinity
number
"Infinity"
-
true
0
number
"0"
-
false
NaN
number
"NaN"
-
false
null
object
"null"
0
false
undefined
undefined
"undefined"
NaN
false
false
boolean
"false"
0
false
true
boolean
"true"
1
-
Эта таблица нам наглядно показывает и выводит 6 ложных значений в JavaScript. То есть таких значений, что приводят к булевому false
.
6 falsy values
""
- пустая строка, даже без пробелов0
NaN
null
undefined
false
👍
Все остальные значения приводятся к true, поэтому достаточно запомнить эти шесть ложных.
🎉
И на засыпку, еще пара специальных правил:
2 == null
и3 == undefined
- не будет численного приведения, потому что так какnull
может равняться толькоnull
илиundefined
, и ничему другому.null == undefined
- вернетtrue
null == null
- вернетtrue
undefined == undefined
- вернетtrue
null == 0
- вернетfalse
NaN
ничему не равен, даже самому себе.NaN == undefined
- вернетfalse
NaN == null
- вернетfalse
NaN == NaN
- вернетfalse
NaN != NaN
- вернетtrue
Теперь давайте ближе рассмотрим операторы, ведь некоторые из них нам уже знакомы, но в программировании еще есть чему удивляться!
Last updated