Типы данных в JavaScript
- Что такое тип данных
- Строки
- Числа
- Логические значения
- null и undefined
- Объекты
- bigint и symbol
- Как проверить тип данных
- Динамическая типизация
- Частые ошибки
В JavaScript у каждого значения есть тип данных. Тип данных говорит языку, что перед ним: строка, число, логическое значение, объект или что-то другое.
Например, 25 - это число, ‘25’ - это строка, а true - логическое значение. На экране они могут выглядеть похоже, но для JavaScript это разные данные.
let age = 25;
let textAge = '25';
let isAdult = true;
Понимать типы данных важно, потому что от них зависит, как будет работать код. Числа можно складывать как числа, строки можно объединять как текст, а логические значения удобно использовать в условиях.
Что такое тип данных
Тип данных - это характеристика значения. Она помогает JavaScript понять, какие действия с этим значением можно выполнять.
Посмотрим на простой пример:
console.log(10 + 5);
console.log('10' + '5');
В первом случае JavaScript складывает два числа:
15
Во втором случае он объединяет две строки:
105
Значения похожи, но типы разные. Поэтому результат тоже разный.
Строки
Строка или string - это текстовые данные. Строки записывают в кавычках.
let name = 'Алексей';
let city = "Москва";
let course = `JavaScript`;
Можно использовать одинарные кавычки, двойные кавычки или обратные кавычки. На первых уроках чаще всего будем использовать одинарные.
Если значение написано в кавычках, для JavaScript это строка, даже если внутри стоят цифры.
let age = '25';
console.log(age);
Здесь ‘25’ - не число, а текст. С этим часто связаны первые ошибки при работе с prompt(), потому что он возвращает именно строку.
Числа
Числа в JavaScript имеют тип number. Это могут быть целые числа и дробные числа.
let count = 10;
let price = 1499.5;
let temperature = -5;
С числами можно выполнять обычные математические действия:
let price = 100;
let count = 3;
console.log(price * count);
В консоли будет:
300
Есть и специальное числовое значение NaN. Оно означает “не число”, хотя формально относится к типу number.
console.log(typeof NaN);
Результат:
number
С NaN мы еще встретимся отдельно, когда будем разбирать преобразование типов и проверки чисел.
Логические значения
Логический тип или boolean может иметь только два значения:
true- истина;false- ложь.
let isStudent = true;
let hasAccess = false;
Такие значения часто используют в условиях. Например, если пользователь авторизован - показать личный кабинет, если нет - показать форму входа.
let isAuth = true;
if (isAuth) {
console.log('Показываем личный кабинет');
}
Подробно условия мы будем разбирать позже. Сейчас важно просто запомнить: true и false - это отдельный тип данных, а не строки.
null и undefined
undefined обычно означает, что значение не было задано.
let userName;
console.log(userName);
В консоли будет:
undefined
Мы создали переменную userName, но ничего в нее не записали. Поэтому JavaScript возвращает undefined.
null обычно используют, когда нужно явно показать пустое значение.
let selectedUser = null;
Такой код можно читать так: пользователь пока не выбран. Значение специально пустое.
Для новичка разницу можно запомнить так:
undefined- значение не задано;null- значение специально сделали пустым.
Объекты
Объект или object - это более сложный тип данных. Он позволяет хранить набор связанных значений.
let user = {
name: 'Алексей',
age: 25
};
В объекте данные хранятся парами: имя свойства и значение. В примере у объекта user есть свойства name и age.
Объекты мы будем изучать отдельно и подробно. Сейчас достаточно понимать, что это тип данных для более сложных структур.
К объектам также относятся массивы и некоторые другие значения, но для них будут отдельные уроки.
bigint и symbol
В JavaScript есть еще типы bigint и symbol.
bigint нужен для очень больших целых чисел:
let bigNumber = 123456789012345678901234567890n;
symbol используют для создания уникальных значений:
let id = Symbol('id');
На старте курса глубоко разбирать их не нужно. В обычных первых задачах чаще всего встречаются строки, числа, логические значения, null, undefined и объекты.
Как проверить тип данных
Чтобы узнать тип значения, можно использовать оператор typeof.
console.log(typeof 'Привет');
console.log(typeof 25);
console.log(typeof true);
console.log(typeof undefined);
В консоли будет:
string
number
boolean
undefined
С переменными это работает так же:
let userName = 'Ирина';
let age = 30;
console.log(typeof userName);
console.log(typeof age);
Результат:
string
number
У typeof есть известная особенность:
console.log(typeof null);
Результат будет таким:
object
Это старая особенность JavaScript. На самом деле null - отдельное значение, но typeof null показывает object. Пока просто запомним этот момент.
Динамическая типизация
JavaScript - язык с динамической типизацией. Это значит, что тип принадлежит значению, а не самой переменной.
Одна и та же переменная может сначала хранить число, а потом строку:
let value = 10;
console.log(typeof value);
value = 'десять';
console.log(typeof value);
В консоли будет:
number
string
Так писать можно, но в реальном коде лучше не менять смысл переменной без необходимости. Если переменная называлась age, ожидается, что там будет возраст, а не текст с другим назначением.
Частые ошибки
Первая ошибка - думать, что число в кавычках остается числом.
let value = '10';
console.log(typeof value);
Результат:
string
Если значение находится в кавычках, это строка.
Вторая ошибка - путать false и ‘false’.
let firstValue = false;
let secondValue = 'false';
console.log(typeof firstValue);
console.log(typeof secondValue);
Результат будет разным:
boolean
string
Третья ошибка - удивляться, что typeof null возвращает object. Это не ваша ошибка в коде, а особенность самого языка.
Четвертая ошибка - ждать, что JavaScript всегда сам правильно поймет, что вы хотите сделать со значением. Иногда он действительно преобразует типы автоматически, но результат может быть неожиданным. Поэтому дальше мы отдельно разберем преобразование типов.
Что дальше
Мы познакомились с основными типами данных JavaScript: строками, числами, логическими значениями, null, undefined и объектами. Также посмотрели, как проверить тип через typeof.
Дальше разберем строки подробнее: как их записывать, объединять, выводить в консоль и почему строка с числом не становится числом автоматически.