Типы данных
Все используемые данные в javascript имеют определенный тип. В JavaScript имеется восемь типов данных:
String
представляет строкуNumber
представляет числовое значениеBigInt
предназначен для представления очень больших целых чиселBoolean
представляет логическое значениеtrue
илиfalse
Undefined
представляет одно специальное значениеundefined
и указывает, что значение не установленоNull
представляет одно специальное значениеnull
и указывает на отсутствие значенияSymbol
представляет уникальное значение, которое часто применяется для обращения к свойствам сложных объектовObject
представляет комплексный объект
Первые семь типов представляют примитивные типы данных. Последний тип - Object
представляет сложный, комплексный тип данных, который состоит из значений примитивных типов или других объектов. Рассмотрим основные примитивные типы данных.
Числовые данные
Number
Тип Number
представляет числа в JavaScript, которые могут быть целыми или дробными:
- Целые числа, например, 35. Мы можем использовать как положительные, так и отрицательные числа. Диапазон используемых чисел: от -253 до 253
- Дробные числа (числа с плавающей точкой), например, 3.5575. Опять же можно использовать как положительные, так и отрицательные числа. Для чисел с плавающей точкой используется тот же диапазон: от -253 до 253
Например:
let x = 45;
let y = 23.897;
В качестве разделителя между целой и дробной частями, как и в других языках программирования, используется точка.
Тип BigInt
Тип BigInt
добавлен в последних стандартах JavaScript для представления очень больших целых чисел, которые выходят за пределы диапазона типа number. Это не значит, что мы не можем совсем работать с большими числами с помощью типа number, но работа с ними в случае с типом number будет сопряжена с проблемами. Рассмотрим небольшой пример:
let num = 9007199254740991
// 9007199254740991
console.log(num);
// 9007199254740992
console.log(num + 1);
// 9007199254740992
console.log(num + 2);
Здесь переменной num присваивается максимальное значение. И далее прибавляем к ней некоторые значения и выводим на консоль результат. И результаты могут нас смутить, особенно в случае прибавления числа 2. Для определения числа как значения типа BigInt в конце числа добавляется суффикс n
:
let dimension = 19007n;
const value = 2545n;
Например, изменим из предыдущего примера тип number на bigint:
let num = 9007199254740991n
// 9007199254740991n
console.log(num);
// 9007199254740992n
console.log(num + 1n);
// 9007199254740993n
console.log(num + 2n);
// 9007199254740994n
console.log(num + 3n);
Тип Boolean
Тип Boolean представляет булевые или логические значения true
(верно) и false
(ложно):
let isAlive = true;
let isDead = false;
Строки String
Тип String
представляет строки. Для определения строк применяются кавычки, причем, можно использовать как двойные, так одинарные, так и косые кавычки. Единственно ограничение: тип закрывающей кавычки должен быть тот же, что и тип открывающей, то есть либо обе двойные, либо обе одинарные.
let user = "Tom";
let company = 'Microsoft';
let language = `JavaScript`;
console.log(user);
console.log(company);
console.log(language);
Если внутри строки встречаются кавычки, то мы их должны экранировать слешем. Например, пусть у нас есть текст "Бюро "Рога и копыта""
. Теперь экранируем кавычки:
let company = "Бюро \"Рога и копыта\"";
Также мы можем внутри стоки использовать другой тип кавычек:
let company1 = "Бюро 'Рога и копыта'";
let company2 = 'Бюро "Рога и копыта"';
Интерполяция
Использование косых кавычек позволяет нам применять такой прием как интерполяция - встраивать данные в строку:
let user = "Tom";
let text = `Name: ${user}`;
// Name: Tom
console.log(text);
Для встраивания значений выражений (например, значений других переменных и констант) в строку перед выражением ставится знак доллара $
, после которого в фигурных скобках указывается выражение. Так, в примере выше ${user}
означает, что в этом месте строки надо встроить значение переменной user
. Подобным образом можно встраивать и больше количество данных:
let user = "Tom";
let age = 37;
let isMarried = false;
let text = `Name: ${user} Age: ${age} IsMarried: ${isMarried}`;
// Name: Tom Age: 37 IsMarried: false
console.log(text);
null и undefined
undefined
указывает, что значение не определено или не установлено. Например, когда мы только определяем переменную без присвоения ей начального значения, она представляет тип undefined
:
let isAlive;
// выведет undefined
console.log(isAlive);
Присвоение значение null
означает, что у переменной отсутствует значение:
let isAlive;
// undefined
console.log(isAlive);
isAlive = null;
// null
console.log(isAlive);
// снова установим тип undefined
isAlive = undefined;
// undefined
console.log(isAlive);
object
Тип object
представляет сложный объект. Простейшее определение объекта представляют фигурные скобки:
let user = {};
Объект может иметь различные свойства и методы:
const user = {name: "Tom", age:24};
console.log(user.name);
В данном случае объект называется user, и он имеет два свойства: name
и age
. Это краткое описание объектов, более подробно объекты мы рассморим в последующих статьях.
Слабая типизация
JavaScript является языком со слабой типизацией. Это значит, что переменные могут динамически менять тип, например:
// тип undefined
let id;
console.log(id);
// тип number
id = 45;
console.log(id);
// тип string
id = "45";
console.log(id);
Несмотря на то, что во втором и третьем случае консоль выведет нам число 45
, но во втором случае переменная id
будет представлять число, а в третьем случае - строку. Это важный момент, который надо учитывать и от которого зависит поведение переменной в программе:
// тип number
let a = 45;
let b = a + 5;
// 50
console.log(b);
// тип string
a = "45";
let c = a + 5
// 455
console.log(c);
Выше в обоих случая к переменной a применяется операция сложения +
. Но в первом случае a представляет число, поэтому результатом операции a + 5
будет число 50
.
Во втором случае a
представляет строку. Но операция сложения между строкой и числом 5
невозможна. Поэтому число 5
будет преобразовываться к строке, и будет происходить операция объединения строк. Поэтому во втором случае результатом выражения a + 5
будет стока "455"
.
Оператор typeof
С помощью оператора typeof
можно получить тип переменной:
let id;
// undefined
console.log(typeof id);
id = 45;
// number
console.log(typeof id);
id = 45n;
// bigint
console.log(typeof id);
id = "45";
// string
console.log(typeof id);
Стоит отметить, что для значения null
оператор typeof
возвращает значение object
, несмотря на то, что согласно спецификации JavaScript значение null
представляет отдельный тип.