Типы данных в JavaScript: краткое руководство
Типы данных — одна из базовых конструкций в любом языке программирования, на основе которых строятся другие структуры данных. В этой статье преподаватель кампуса Elbrus Bootcamp Адам Балкоев в рамках подготовки к пре-курсу расскажет вам все, что необходимо знать для новичка о типах данных в JS.
JavaScript (JS) — язык программирования с динамической типизацией. Это означает, что во время объявления переменной не нужно указывать ее тип — он определится автоматически при присвоении значения.
Какие типы данных есть в JavaScript
Типов данных в JS восемь: number, string, boolean, undefined, object, bigInt, symbol и null.
number
Тип данных number — числовой. Если вы записываете значение переменной в виде чисел, с плавающей запятой (отрицательных или положительных), например 30, -7 и 99,99 , как в коде ниже, то JS автоматически определяет их как number:
let age = 30;
let num = -7;
let price = 99.99;
// Обратите внимание, что в JS вместо запятой используется точка для записи рациональных чисел
С числами в JS можно выполнять различные математические операции: складывать (+), вычитать (-), умножать ( *) и делить. Выглядеть это может, например, так:
let quantity = 10;
let price = 2.99;
let total = quantity * price;
console.log(total); // 29.9
В примере выше переменной quantity (количество) присваивается значение 10 (целое число), а переменной price (цена) — 2,99 (число с плавающей запятой). В переменной total (итог) цена умножается на количество, а результат выводится в консоль.
Максимальными и минимальными целыми числами в JS будут и 253 - 1 и -(253 - 1) соответственно. Если вы выйдете за пределы этих чисел, то Number выдаст нам значение infinity.
BigInt
Большие числа (Bigint) — это встроенный тип данных в JavaScript, который позволяет работать с целыми числами произвольной длины без потери точности.
До появления BigInt в JavaScript, числа, превышающие максимальное значение типа Number, автоматически преобразовывались в специальное значение Infinity. Но BigInt позволяет обрабатывать числа, которые выходят за пределы этого максимального значения, с сохранением точности.
Для создания значения BigInt используется суффикс "n" в конце числа или вызов конструктора BigInt():
const bigNum1 = 1234567890123456789012345678901234567890n;
const bigNum2 = BigInt("9876543210987654321098765432109876543210");
string
Текст, заключенный в одинарные ('), двойные (") или обратные (`) кавычки, язык программирования автоматически относит к типу string — строка.
let name = 'Adam';
let lastName = "Balkoev"
let greeting = `Привет, ${name} ${lastName}`// Это запись шаблонной строки с использованием обратных кавычек
Важно уточнить, что строки в JS неизменяемые: нельзя заменить отдельный символ после ее создания. С уже готовыми строками можно выполнять различные операции, в том числе объединять их, как в примере ниже:
let firstName = "Adam";
let lastName = "Balkoev";
let fullName = firstName + " " + lastName;
// fullName will be "Adam Balkoev"
boolean
Следующий тип данных — boolean. Это логический тип, который может принимать только два значения: true или false, правда или ложь. Если мы присвоим переменной значением true, JS автоматически определит ее тип как boolean. Такой тип данных часто используется в операторах if и циклах for и помогает понять, какую часть кода выполнять, например:
let isLogged = true;
if (isLogged) {
console.log("Пользователь вошел в систему");
} else {
console.log("Пользователь не вошел в систему");
}
В данном примере используется переменная isLogged, которая хранит значение true. Затем проверяется условие с помощью оператора if. Если переменная isLogged равна true, то выводится сообщение о том, что пользователь вошел в систему. В противном случае выводится сообщение о том, что пользователь не вошел в систему.
null
null в JS — это еще один тип, который имеет смысл «ничего» или «значение неизвестно». Давайте создадим переменную trash (корзина) с пустым значением, которое свидетельствует, что мы не знаем, что находится в корзине:
let trash = null;
undefined
Если в JS создать переменную и не присвоить ей никакого значения, язык программирования автоматически определит тип данных в ней как undefined. Рассмотрим пример: создадим переменную box с пустым значением, которое свидетельствует, что в коробке пока ничего нет:
let box;
condole.log(box) // undefined
object
Рассмотрим этот тип на примере. Напишем объект book, внутрь которого поместим несколько свойств: название, автор и количество страниц в книге.
let book = {
title: "Рефакторинг. Улучшение существующего кода",
author: "Мартин Фаулер",
numberOfPages: 10,
}
Значение этой переменной JS автоматически отнесет к типу object. Язык программирования при определении типа данных не проверяет, что находится внутри объекта: он видит структуру и по ней определяет тип.
symbol
Тип данных Symbol в JavaScript был добавлен в стандарте ECMAScript 6 (ES6) для представления уникальных и неизменяемых значений. Преимущества использования Symbol включают:
- Уникальность: каждый символ уникален, даже если у них одинаковое описание. Это позволяет избежать конфликтов имен при использовании символов в качестве свойств объектов
- Приватные свойства и методы: можно использовать символы для определения приватных свойств и методов объектов, к которым нельзя случайно обратиться и изменить из других участков программы.
Создать символ можно следующим с помощью конструктора Symbol():
// Создание символа с описанием
const mySymbol = Symbol('Описание моего символа');
console.log(mySymbol); // Выведет: Symbol(Описание моего символа)
// Создание без описания
const anotherSymbol = Symbol();
console.log(anotherSymbol); // Выведет: Symbol()
Кстати, тип symbol крайне редко используется новичками.
Оператор typeof
Оператор typeof позволяет определить, какой тип данных скрывается за той или иной переменной. Поскольку JS присваивает данным тип автоматически, иногда полезно узнать, как язык видит значение переменной. Чтобы увидеть тип данных в консоли нужно написать функцию console.log() с оператором typeof и указанием переменной. Например, так:
let name = "Adam";
console.log(typeof name); // string
let age = 30;
console.log(typeof age); // number
Видеоурок
Наш преподаватель Адам Балкоев записал для вас видеоурок для закрепления материала:
Потренироваться в использовании разных типов данных вы можете здесь ↓