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


Данные в JS делятся на два вида: примитивы и объекты.

Примитивные типы (7 видов):

// 1. String (строка) - текст
let name = "Иван";
let greeting = 'Привет, мир!';
let template = `Меня зовут ${name}`; // Шаблонная строка

// 2. Number (число) - целые и дробные
let integer = 42;
let float = 3.14;
let negative = -5;
let infinity = Infinity;

// 3. Boolean (логический тип) - true/false
let isOnline = true;
let isCompleted = false;

// 4. Undefined - переменная объявлена, но значение не присвоено
let undefinedVariable;
console.log(undefinedVariable); // undefined

// 5. Null - специальное значение "ничего", "пусто"
let emptyValue = null;

// 6. BigInt - для очень больших чисел
let bigNumber = 123456789012345678901234567890n;

// 7. Symbol - уникальный идентификатор (для продвинутых тем)
let id = Symbol("id");

Проверка типа данных:

typeof "Текст"; // "string"
typeof 42; // "number"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object" (историческая особенность JS)
typeof {}; // "object"
typeof []; // "object" (массив - тоже объект)

Массивы: списки данных

Массив — это упорядоченная коллекция элементов с числовой нумерацией.

Создание массива:

// Способ 1: Литерал массива (рекомендуется)
let fruits = ["Яблоко", "Банан", "Апельсин"];

// Способ 2: Конструктор Array
let numbers = new Array(1, 2, 3);

// Пустой массив
let emptyArray = [];

// Массив с разными типами данных
let mixed = [1, "Текст", true, {name: "Объект"}, [1, 2, 3]];

Работа с массивами:

let colors = ["Красный", "Зеленый", "Синий"];

// Получение элементов (нумерация с 0!)
console.log(colors[0]); // "Красный"
console.log(colors[1]); // "Зеленый"

// Изменение элементов
colors[2] = "Голубой";

// Длина массива
console.log(colors.length); // 3

// Добавление в конец
colors.push("Желтый");

// Удаление с конца
let lastColor = colors.pop();

// Добавление в начало
colors.unshift("Черный");

// Удаление с начала
let firstColor = colors.shift();

// Поиск индекса элемента
let index = colors.indexOf("Зеленый"); // 1

Методы массивов (часто используемые):

let numbers = [1, 2, 3, 4, 5];

// forEach - перебор элементов
numbers.forEach(function(number) {
  console.log(number * 2);
});

// map - создание нового массива на основе старого
let doubled = numbers.map(function(number) {
  return number * 2;
});
// doubled = [2, 4, 6, 8, 10]

// filter - фильтрация элементов
let evenNumbers = numbers.filter(function(number) {
  return number % 2 === 0;
});
// evenNumbers = [2, 4]

// find - поиск первого подходящего элемента
let found = numbers.find(function(number) {
  return number > 3;
});
// found = 4

Многомерные массивы:

let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

console.log(matrix[1][2]); // 6 (вторая строка, третий элемент)

Объекты: хранение данных в формате «ключ-значение»

Объект — это коллекция данных, где каждое значение имеет имя (ключ).

Создание объекта:

// Способ 1: Литерал объекта (самый частый)
let user = {
  name: "Алексей", // ключ: значение
  age: 30,
  isAdmin: true,
  "любимый цвет": "синий" // Ключ с пробелом в кавычках
};

// Способ 2: Конструктор Object (реже)
let car = new Object();
car.brand = "Toyota";
car.model = "Camry";

Работа с объектами:

// Получение значений
console.log(user.name); // "Алексей" - точечная нотация
console.log(user["age"]); // 30 - квадратные скобки
console.log(user["любимый цвет"]); // "синий"

// Изменение значений
user.age = 31;
user["isAdmin"] = false;

// Добавление новых свойств
user.city = "Москва";
user["страна"] = "Россия";

// Удаление свойств
delete user.isAdmin;

// Проверка существования свойства
console.log("name" in user); // true
console.log(user.hasOwnProperty("age")); // true

Вложенные объекты:

let company = {
  name: "TechCorp",
  address: {
    city: "Санкт-Петербург",
    street: "Невский проспект",
    building: 15
  },
  employees: 200
};

console.log(company.address.city); // "Санкт-Петербург"