Восемь типов данных
Мы уже встречали разные значения:
const age = 42;const greeting = 'Привет';Выглядят они по-разному и ведут себя по-разному: числа можно складывать и умножать, а со строками – работать как с текстом.
Категория, к которой относится значение, называется его типом – тип и определяет, что со значением можно делать. Например, 42 имеет тип число (number), а 'Привет' – тип строка (string).
Ещё один простой тип: boolean
Иногда программе нужен не текст и не число, а ответ на вопрос: да или нет. Для этого существует булев тип (boolean). У него всего два значения – true («да») и false («нет»):
const isOnline = true;const isFinished = false;number, string и boolean – лишь часть системы. Всего в JavaScript восемь типов: семь примитивных и один объектный. Примитивы представляют отдельные значения, а объекты объединяют значения в структуры.
Два примитива на карте связаны с отсутствием значения, но означают разное: null ставят намеренно – «здесь пусто», а undefined появляется сам, когда значение ещё не определено:
const pet = null; // «пусто» намеренноlet city; // undefined – ещё не заданоsymbol и bigint в начальном коде встречаются редко: первый создаёт уникальные идентификаторы, второй хранит целые числа любой величины.
Восьмой тип – объектный. Объект объединяет несколько связанных значений в одну структуру; к объектному типу относятся также массивы и функции:
// объект: связанные значения разных типовconst user = { name: 'Ира', age: 25, isOnline: true,};// массив: список значенийconst scores = [7, 9, 10];// функция: действие, вызываемое по имениfunction greet() { console.log('Привет!');}Тип принадлежит значению, а не переменной. Одна переменная let из урока «Переменные: let и const» может сначала быть связана с числом, а затем со строкой:
let value = 42; // numbervalue = 'сорок два'; // stringПеременная осталась той же, но теперь в ней находится значение другого типа. Это и называют динамической типизацией: язык не закрепляет тип за переменной – тип живёт у значения.
typeof: узнать тип значения
Оператор typeof позволяет быстро определить тип большинства значений. Ответ приходит строкой с названием типа: typeof 42 – это строка 'number'. Оператор незаменим, когда значение пришло откуда-то извне и вы не уверены, что это: число или строка с цифрами внутри – для программы это принципиально разные вещи.
console.log(typeof 42); // 'number'console.log(typeof '42'); // 'string'console.log(typeof true); // 'boolean'console.log(typeof 'true'); // 'string'Для number, string, boolean, undefined, symbol и bigint результат совпадает с именем типа. У null, объектов и функций есть особенности:
// 'object' – историческое исключениеconsole.log(typeof null);// 'object' – массив относится к объектному типуconsole.log(typeof [1, 2, 3]);// 'function' – у функций свой ответconsole.log(typeof (() => {}));Поэтому typeof хорошо подходит для простых значений, но не различает все разновидности объектов.
// теперь вы знаете
- В JavaScript восемь типов: семь примитивных и один объектный – object
- Примитивы представляют самостоятельные значения, а тип object позволяет объединять связанные данные
- typeof возвращает строку с названием типа; у null, объектов и функций – особенности
- Кавычки делают строку: typeof '42' – это 'string'
- Тип принадлежит значению, а не переменной: та же let-переменная может связаться со значением другого типа
Что вернёт typeof 'true'?
Что появится в консоли?
let value = 42;value = 'сорок два';console.log(typeof value);