DevSkillRoad

Типы данных в JavaScript

🔢 Числа, строки, булевы, null, undefined, Symbol, BigInt

В JavaScript переменные могут хранить данные разных типов. Всего в языке 8 основных типов данных.

1. Числа (number)

Целые числа и числа с плавающей точкой (десятичные дроби).

let age = 25;      // целое число
let price = 99.99;  // дробное число

✅ Переменная хранит целое число 25

2. Строки (string)

Текст, заключённый в кавычки. Можно использовать одинарные, двойные или обратные кавычки — все три способа работают.

let name = 'Иван';       // одинарные
let city = "Москва";     // двойные
let text = `Привет, ${name}!`; // обратные (позволяют вставлять переменные)

Особенность обратных кавычек: Внутрь можно вставлять переменные через ${}. Это удобно для создания строк с данными.

✅ Обратные кавычки позволяют вставить переменную name внутрь строки

📌 Когда что использовать:
  • Одинарные или двойные кавычки — для обычного текста (без разницы)
  • Обратные кавычки — когда нужно вставить переменную или написать текст в несколько строк

3. Булевый тип (boolean)

Только два значения: true (истина) или false (ложь). Используется в условиях.

let isLogged = true;
let isAdmin = false;

✅ Переменная хранит значение true

4. null — «ничего», пустое значение

Используется, когда нужно явно указать, что значения нет. Это вы сами говорите программе: «здесь ничего нет».

let user = null;  // пользователь не выбран

5. undefined — значение не определено

Переменная объявлена, но ей не присвоили значение. Это JavaScript сам говорит: «ты объявил переменную, но ничего в неё не положил».

let temp;  // значение undefined (ничего не присвоили)
📌 Разница между null и undefined:
  • undefined — значение не присвоено (JS сам так сказал)
  • null — вы сами сказали, что значения нет

6. Symbol — уникальный идентификатор

Создаёт уникальное значение, которое никогда не совпадёт с другим. Используется редко, в основном для служебных нужд (например, чтобы добавить скрытое свойство в объект).

Важно: В скобках пишется описание (метка) — оно не влияет на уникальность, просто для удобства разработчика.

let id1 = Symbol('id');
let id2 = Symbol('id');
console.log(id1 === id2); // false — они разные, даже если описание одинаковое

✅ Даже с одинаковым описанием, два Symbol никогда не равны друг другу

📌 Простыми словами: Symbol — это как уникальная бирка. Даже если на двух бирках написано «id», это всё равно разные бирки. Описание в кавычках — просто надпись для человека.

7. BigInt — большие целые числа

Для чисел, которые больше 2^53 - 1. Объявляются добавлением n в конце.

let big = 9007199254740991n;

8. Оператор typeof — узнать тип переменной

Оператор typeof возвращает строку с типом данных.

typeof 42;        // "number"
typeof 'привет';   // "string"
typeof true;       // "boolean"
typeof undefined;  // "undefined"
typeof null;       // "object"  ← это историческая ошибка языка

Проблема с null: typeof null возвращает "object", хотя null — это отдельный тип.

Как отличить null от объекта? Используйте прямое сравнение === null.

let data = null;
if (data === null) {
    console.log('Это null');
} else if (typeof data === 'object') {
    console.log('Это объект');
}

✅ Первая кнопка показывает баг. Вторая — правильную проверку на null. Третья и четвёртая — типы чисел и строк.

📌 Запомните:
  • typeof null === "object" — это баг, смиритесь
  • Проверяйте на null через value === null
  • Для проверки на объект сначала исключите null: value !== null && typeof value === "object"
📓 Из тетради: «Типы данных — это кирпичики, из которых строятся программы. Числа для расчётов, строки для текста, булевы для условий. Освоите их — поймёте, как работает любой код».