Типы данных в JS
В этой статье вы познакомитесь с типами данными, доступными в JavaScript, на конкретных примерах.
В JavaScript существует 8 типов данных. Каждое значение, которые можно хранить в переменных и константах, соответствует одному из них.
Типы данных в JavaScript
Тип данных | Описание | Пример |
String | текстовая информация — набор символов | 'Привет' , "Привет, мир!" и т.д. |
Number | целые числа или числа с плавающей точкой | 3 , 3.234 , 3e-2 и т.д. |
BigInt | целые числа произвольной длины | 900719925124740999n , 1n и т.д. |
Boolean | логическое значение true или false | true , false |
undefined | тип неинициализированной переменной | let a; |
null | только специальное значение null | let a = null; |
Object | пары ключ-значение коллекции данных | let student = { }; |
Symbol | используют для создания уникальных идентификаторов в объектах | let value = Symbol("Привет") |
Все типы данных, кроме Object
, называются примитивными. Object
— непримитивный тип данных. В нём можно хранить коллекции данных или более сложные структуры.
Строки в JavaScript
В типе String
хранится текст — набор символов. В JavaScript строки выделяются кавычками или обратными апострофами:
- Одинарными кавычками:
'Привет'
. - Двойными кавычками:
"Привет"
. - Обратными апострофами:
`Привет`
.
Одинарные и двойные кавычки практически взаимозаменяемы. В большинстве случаев нет никакой разницы, что использовать.
Обратные апострофы обычно используют, когда нужно включить переменные или выражения в строку. Это делается обертыванием переменных или выражений символом ${переменная или выражение}
.
const name1 = 'Java';
const name2 = "JavaScript";
const result = `Запомни ты уже: ${name1} и ${name2} — совершенно разные ЯП!`;
Числа в JavaScript
Для хранения числовых данных в JavaScript существует два типа: Number
и BigInt
.
Number
В типе Number
хранятся целые числа (integer) и числа с плавающей точкой (float) от -25^3 - 1 до 25^3 - 1.
const number1 = 3;
const number2 = 3.433;
const number3 = 3e5 // 3 * 10^5
В этом типе также могут храниться значения Infinity
(бесконечность), +Infinity
(+бесконечность), -Infinity
(-бесконечность), NaN
(not a number, не число).
const number1 = 3/0;
console.log(number1); // Infinity
const number2 = -3/0;
console.log(number2); // -Infinity
// строку нельзя разделить на число
const number3 = "abc"/3;
console.log(number3); // NaN
BigInt
В типе BigInt
можно хранить числа неопределенного размера, то есть если они не влезают в промежуток допустимых значений Number: от -25^3 - 1 до 25^3 - 1.
Значения типа BigInt
создаются добавлением n
в конец числа.
// Значение типа BigInt
const value1 = 900719925124740998n;
// Сложение двух чисел типа BigInt
const result1 = value1 + 1n;
console.log(result1); // "900719925124740999n"
const value2 = 900719925124740998n;
// Ошибка! Значения типов BigInt и Number нельзя складывать
const result2 = value2 + 1;
console.log(result2);
Примечание.
BigInt
появился в новых версиях JavaScript относительно недавно, поэтому еще недоступен в некоторых браузерах, включая Safari. Проверить, поддерживает ли браузер типBigInt
можно на странице JavaScript BigInt support.
Логический тип в JavaScript
В типе Boolean
можно хранить два логических (булевых) значения: true
или false
.
const dataChecked = true;
const valueCounted = false;
Значение undefined в JavaScript
В типе undefined
хранится единственное специальное значение undefined
, которое присваивается неинициализированной переменной или константе. То есть если мы объявим переменную или константу, но не присвоем ей никакого значения, она будет хранить undefined
.
let name;
console.log(name); // undefined
Значение undefined можно присвоить переменной или константе и вручную.
let name = undefined;
console.log(name); // undefined
Совет. Желательно не присваивать переменным и константам значение undefined. Если нужно обозначить неизвестную информацию или «пустое» значение, лучше воспользоваться значением
null
.
Значение null в JavaScript
В типе null
хранится единственное специальное значение null
, которое обозначет «пустое» или неизвестное значение.
const number = null;
Код выше означает, что в переменной number — пусто.
Примечание. Не забывайте, что JavaScript чувствителен к регистру. Поэтому
null
— это не то же самое, что и Null или NULL.
Объекты в JavaScript
Тип Object
хранит пары ключ-значение коллекции данных.
const student = {
firstName: "Андрей",
lastName: null,
class: 11
};
Здесь firstName
, lastName
, class
— ключи, "Андрей"
, null
и 11
— соответствующие им значения.
Символы в JavaScript
Символы в JS отличаются от привычных символов. Тип Symbol
в JavaScript используется для создания уникальных, неизменяемых идентификаторов в объектах.
// два символа с одинаковым описанием
const value1 = Symbol("привет");
const value2 = Symbol("привет");
Несмотря на то, что и value1
, и value2
хранят одинаковое описание "привет"
, это разные символы — так работает тип Symbol
.
В JS — динамическая типизация
JavaScript — это динамически типизированный язык, то есть:
- JS автоматически определяет тип данных переменных за вас;
- одной переменной можно присваивать разные значения.
// переменная data не инициализирована
// значит, она типа undefined
let data;
// переменной data присвоили число
// значит, data изменила тип на Number
data = 5;
// переменной data присвоили строку
// значит, data изменила тип на String
data = "JavaScript";
Оператор typeof в JavaScript
Чтобы узнать тип переменной или константы используют оператор typeof()
.
const name = "Андрей";
typeof(name); // возвращает "string"
const number = 4;
typeof(number); // возвращает "number"
const valueChecked = true;
typeof(valueChecked); // возвращает "boolean"
const a = null;
typeof(a); // возвращает "object"
Примечание. Обратите внимание, что
typeof
возвращает"object"
для типаnull
. Это давно известный баг, который присутствовует в JS с момента релиза. Этот баг, скорее всего, никогда не исправят из-за необходимости сохранять обратную совместимости существующего кода с новыми версиями языка.