Типы данных
У каждого значения в JavaScript есть тип — вид данных, который определяет, что с этим значением можно делать. Числа можно умножать, строки — переводить в верхний регистр, а логические значения — проверять в условиях.
Основные типы
| Тип | Пример | Описание |
|---|---|---|
number | 42, 3.14 | Число, целое или дробное |
string | 'текст' | Строка — любой текст в кавычках |
boolean | true, false | Логическое значение: истина или ложь |
undefined | undefined | Значение ещё не задано |
null | null | Значение намеренно пустое |
object | [1, 2], { a: 1 } | Массивы и объекты — наборы значений |
Первые пять типов называют примитивами: это простые, неделимые значения. Массивы и объекты разберём в отдельных главах.
Оператор typeof
Оператор typeof возвращает название типа в виде строки:
console.log(typeof 42); // numberС его помощью можно проверить, что лежит в переменной:
console.log(typeof 'текст'); // string
console.log(typeof true); // boolean
console.log(typeof undefined); // undefinedЛогические значения
Тип boolean имеет всего два значения: true (истина) и false (ложь). Их чаще всего получают при сравнении:
console.log(5 > 3); // trueЛогические значения управляют условиями и циклами — с ними мы встретимся в следующей главе.
undefined и null
Переменная, которой ещё ничего не присвоили, содержит undefined. А null присваивают сами, когда хотят явно показать, что значения нет:
let city;
const discount = null;
console.log(city); // undefined
console.log(discount); // nullПроще всего запомнить так: undefined — «ещё не задано», null — «задано, но пусто».
Тип меняется вместе со значением
В JavaScript тип принадлежит значению, а не переменной. Одна и та же переменная, объявленная через let, может хранить сначала число, а потом строку:
let value = 42;
value = 'сорок два';
console.log(typeof value); // stringТак писать можно, но лучше не стоит: код легче читать, когда в переменной всегда лежат данные одного типа.
Частая ошибка
У typeof есть известная странность: для null он возвращает 'object'. Это ошибка первых версий языка, которую оставили ради совместимости со старыми сайтами:
console.log(typeof null); // objectЧтобы проверить, что значение равно null, сравнивайте его напрямую: value === null.