Типы данных JavaScript

Любые данные, используемые в JavaScript имеют определенный тип данных. Здесь мы рассмотрим все типы данных, используемые в JavaScript, а далее — работу с этими типами.

Все типы данных JavaScript

Всего в JavaScript имеется восемь типов данных:

    1. Number — число
    2. String — строка
    3. Boolean — логическое значение (true/false)
    4. Undefined — специальное значение undefined
    5. Symbol — символ
    6. BigInt — предназначен для представления очень больших целых чисел
    7. Null — представляет одно специальное значение — null (отсутствие значения)
    8. Object — комплексный объект

В отличие от первых семи типов данных, тип object представляет собой сложный (комплексный) объект, который может состоять из примитивных данных. Рассмотрим типы данных JavaScript более подробно.

Числа (тип Number)

Значения типа number в JavaScript представлены в виде 64-битных чисел двойной точности с плавающей запятой с диапазоном значений -253-1 до 253-1 — так называемый «безопасный диапазон значений».  Это означает, что переменная типа number может содержать любое значение из диапазона, например:

let num = 2;
let num2 = 1.455;
let num3 = 2**53; //9007199254740992

В качестве разделителя целой и дробной части числа используется точка. Для записи чисел в JavaScript можно использовать и другие способы, например

let num = 0x4E; //78
let num2 = 15e-5;//0.00015

Если в начале числового литерала стоит префикс 0x, то литерал воспринимается как число, записанное в шестнадцатеричной системе счисления. Также, числа в JavaScript можно записывать и в экспоненциальном представлении (см. запись значение переменой num2).

Что произойдет, если мы выйдем за безопасный диапазон значений типа number? Посмотрим на следующий пример:

const num = 9999999999999999;
console.log(num); // 10000000000000000

В этом примере продемонстрирована потеря точности — вместо значения 9999999999999999 константа стала равна 10000000000000000. Происходит это по причине того, что мы присвоили константе значение, которое выходит за безопасный диапазон значений. По этой причине в JavaScript был добавлен ещё один тип данных — BigInt.

Большие числа (BigInt)

В большинстве случаев, Вам вряд ли когда-то потребуется использовать в своих программах на JavaScript числа больше, чем 253 или меньшие, чем -253, однако, такая вероятность существует и поэтому в последних стандартах языка JavaScript был введен новый тип данных — BigInt (большое число). Этот тип предназначен для работы с числами, выходящими за безопасный диапазон number. Чтобы представить число как BigInt, необходимо добавить к значению суффикс n. Например, перепишем предыдущий пример так, чтобы избавиться от потери точности:

const num = 9999999999999999n;
console.log(num); // 9999999999999999n

Тип Boolean

Тип Boolean представляет логические значения: true (истина) и false (ложь). Например,

let fileExist = true;
let connected = false;

Строки (тип String)

Тип String представляет строки — последовательности символов. Для записи строк в JavaScript могут использоваться три вида кавычек: двойные, одинарные и косые:

let helloString = "Hello, world!"
let userName = 'Вася Пупкин';
let sampleString = `строка в косых кавычках`;

Основное правило записи строк в JavaScript: строка должна содержать один и тот же тип кавычек в начале и в конце. Если внутри самой строки используются кавычки, то мы можем поступить двумя способами:

использовать два типа кавычек, например, так:

let name = 'ООО "Зеленоглазое такси"';
console.log(name);//ООО "Зеленоглазое такси"

или же экранировать внутренние кавычки с использованием символа /:

let name = "ООО \"Зеленоглазое такси\"";
console.log(name);//ООО "Зеленоглазое такси"

Косые кавычки используются для применения такого приема, как интерполяция строк — встраивание в строку значений. Например,

let year = 2023;
let sampleString = `Сейчас ${year} год`;
console.log(sampleString);//Сейчас 2023 год

Конструкция ${...} означает, что на это место в строке будет вставлено значение переменной, указанной в фигурных скобках. С помощью интерполяции можно встраивать в строки любое количество переменных, например:

let year = 2023;
let user = "Вася";
let b = true;
let sampleString = `${user}, cейчас ${year} год. Это значение boolean - ${b}`;
console.log(sampleString);//Вася, cейчас 2023 год. Это значение boolean - true

Типы Undefined и Null

Тип Undefined представляет всего одно специальное значение undefined, которое означает, что значение переменной не определено. Это значение мы можем увидеть, например, когда мы только объявляем переменную и ещё не присвоили ей значение:

let year;
console.log(year);//undefined

в свою очередь, null означает отсутствие какого-либо объектного значения. Обычно, значение null присваивается намеренно (в отличие от undefined), чтобы явно указать, что переменная не представляет какого-либо значения:

let year = null;
console.log(year);//null

Типы Object и Symbol

Тип Object занимает особое место среди других типов данных. Так, все рассмотренные ранее типы называются также «примитивными», так как могут содержать только какие-то конкретные значения — строки, числа, true/false и т.д. Тип Object определяет комплексный тип данных, который может содержать целые коллекции данных, например:

let user = {name: "Вася", role: "Администратор"};
console.log(user);

Здесь мы определили объект, содержащий основную информацию о пользователе. В свою очередь, тип Symbol позволяет создавать уникальные идентификаторы в объектах. О том, как использовать типы Object и Symbol мы поговорим более подробно позднее, так как это довольно интересная и важная тема.

Оператор typeof

Во всех примерах, показанных выше, мы нигде явно не указывали тип данных для переменных так как этого сделать в JavaScript нельзя. Дело в том, что JavaScript — это язык, во-первых, с динамической типизацией, то есть тип переменной определяется в момент присвоения ей значение, а, во-вторых, это язык со слабой типизацией, то есть переменная может менять свой тип данных сколько угодно раз. Например, в JavaScript мы можем сделать так:

let variable = 1;//number
variable = "Один"; //string
variable = true; //boolean

Что делать, если мы планируем обрабатывать значения переменных в зависимости от их типа или же просто хоти проверить, что переменная действительно содержит число 1, а не строку «Один»? Для этого, в JavaScript используется оператор typeof, который имеет две формы записи:

  1. как оператор: typeof x
  2. как функция: typeof(x)

Вызов typeof возвращает строку, представляющую название типа данных переменной, например:

let variable = 1;
console.log(typeof variable);//number
variable = "Один";
console.log(typeof(variable));//string
variable = true; 
console.log(typeof variable);//boolean

Интересное значение этот оператор возвращает по отношению к null:

variable = null; 
console.log(typeof variable);//object

Несмотря на то, что null в JavaScript определен как отдельный примитивный тип данных, typeof определяет null как object. Вот такая особенность, которую стоит учитывать в своей работе.

Итого

В JavaScript существует восемь типов данных: числа (number), строки (string), логические значения (boolean), null (отсутствие значение), undefined (не определенное значение), большие числа (BigInt), а также объект (object) и символ (symbol). В JavaScript тип переменной определяется в момент присвоения этой переменной какого-либо значения. Для того, чтобы узнать какой тип данных содержит та или иная переменная, используется оператор typeof.

Оставьте комментарий