Типы данных в 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) от -(2^53 - 1) до 2^53 - 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: от -(2^53 - 1) до 2^53 - 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 с момента релиза. Этот баг, скорее всего, никогда не исправят из-за необходимости сохранять обратную совместимости существующего кода с новыми версиями языка.