Перейти к содержимому
Тема 3 из 16
Теория

Типы данных

Зачем это нужно

Значения бывают разных типов: текст, числа, «да/нет». От типа зависит, что с значением можно делать. 5 + 5 — это 10, а "5" + "5" — это "55". Данные из форм, файлов и интернета почти всегда приходят строками, и их нужно уметь превращать в числа — иначе калькулятор начнёт склеивать цифры вместо сложения.

Основные типы

Тип Примеры Что это
string "Аня", '42', `привет` строка, текст
number 42, 3.14, -7 число (целое и дробное — один тип)
boolean true, false логическое «да / нет»
undefined undefined «значения ещё нет»
null null «значения нет специально»

Есть ещё bigint и symbol — они нужны редко. А массивы и объекты мы разберём позже.

Узнать тип: typeof

console.log(typeof "привет");
console.log(typeof 42);
console.log(typeof true);
console.log(typeof undefined);

Вывод:

string
number
boolean
undefined

Странность языка: typeof null выдаёт "object". Это старая ошибка, которую уже не исправить.

undefined и null

Если создать переменную и ничего в неё не положить, там будет undefined:

let answer;
console.log(answer);

Вывод:

undefined

null ставят сами, когда хотят сказать «тут пусто»: let winner = null; — победителя пока нет.

Шаблонные строки

Строку в обратных кавычках ` называют шаблонной. Внутрь неё можно подставить значение через ${...}:

const name = "Аня";
const age = 15;
console.log(`Меня зовут ${name}, мне ${age} лет`);
console.log(`Через год будет ${age + 1}`);

Вывод:

Меня зовут Аня, мне 15 лет
Через год будет 16

Внутри ${} можно писать любое выражение. Это удобнее, чем склеивать куски через +.

Преобразование типов

В число:

console.log(Number("42"));      // 42
console.log(Number("3.5"));     // 3.5
console.log(Number(""));        // 0
console.log(Number("12px"));    // NaN
console.log(parseInt("12px"));  // 12
console.log(parseFloat("1.5kg")); // 1.5

NaN (Not a Number, «не число») — особое числовое значение: результат неудачного превращения. Проверяют его функцией Number.isNaN(x). Обычное сравнение не работает: NaN === NaN — это false!

Number требует, чтобы вся строка была числом. parseInt и parseFloat читают цифры с начала строки и останавливаются на первом лишнем символе.

В строку: String(42) → "42", или `${42}`.

В логическое: Boolean(x). Значения, которые превращаются в false, называют «ложными»: 0, "" (пустая строка), null, undefined, NaN, false. Всё остальное — true, даже строка "0" и строка "false".

Автоматическое преобразование

JavaScript иногда сам меняет типы — и это источник сюрпризов:

console.log("5" + 2);   // 52  — плюс со строкой склеивает
console.log("5" - 2);   // 3   — минус строку превращает в число
console.log("5" * "2"); // 10
console.log(true + 1);  // 2   — true становится 1

Вывод:

52
3
10
2

Правило: если у + хоть с одной стороны строка — будет склейка. Поэтому данные из форм лучше явно превращать в числа через Number(...).

Как это работает внутри

Каждое значение в памяти хранится вместе с меткой своего типа. Когда ты пишешь a + b, движок сначала смотрит на типы: два числа — складывает, есть строка — превращает вторую часть в строку и склеивает. Типы не привязаны к переменной: в одну и ту же let можно положить сначала число, а потом строку. Такой язык называют динамически типизированным.

Частые ошибки

  1. Склейка вместо сложения. "10" + 5 → "105". Исправление: Number("10") + 5.
  2. Number от строки с буквами. Number("12px") → NaN. Нужен parseInt("12px").
  3. Сравнение с NaN. x === NaN всегда false. Используй Number.isNaN(x).
  4. Обычные кавычки вместо обратных. "Привет, ${name}" выведет текст как есть, с долларом и скобками. Подстановка работает только в `…`.
  5. Строка "false" считается истинной. Boolean("false") → true, потому что строка не пустая.

Шпаргалка

Что Как Результат
Узнать тип typeof x "string", "number"…
Строка → число Number("42") 42
Число с начала строки parseInt("12px") 12
Дробное с начала строки parseFloat("1.5kg") 1.5
Проверка на NaN Number.isNaN(x) true / false
Число → строка String(42) "42"
Подстановка `Итого: ${sum}` "Итого: 12"
Ложные значения 0 "" null undefined NaN false всё остальное — истина

Строки в числа

Лёгкая+10 XP

В переменных a и b лежат строки "5" и "7". Создай константу sum, в которой будет число 12 — сумма этих значений.

Подключи коннектор, чтобы решать задачи

Код задач выполняется на твоём компьютере — так быстрее и надёжнее, чем в браузере. Для этого нужна бесплатная программа-коннектор CodeWithMe. Подключить её нужно один раз.

Ищем коннектор на этом компьютере…

  1. 1
    Скачай коннектор для своей системы (Windows, macOS или Linux).Скачать коннекторНа странице загрузки выбери файл со своей системой в названии, например windows-amd64.
  2. 2Запусти его и выбери папку, где будут лежать твои решения. Python и Node.js он поставит туда сам, когда понадобится.
  3. 3
    Введи ниже код из 6 цифр — он написан в окне коннектора («Код для сайта CodeWithMe»). Если браузер спросит про доступ к локальной сети — разреши.

Коннектор открытый (исходный код на GitHub), работает только на твоём компьютере и выполняет код лишь после ввода кода сопряжения.