← Назад к вопросам

На какие группы делятся данные в JS?

1.0 Junior🔥 171 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

На какие группы делятся данные в JS?

В JavaScript все данные разделены на две основные группы: примитивные типы и объектные типы (ссылочные). Это фундаментальное разделение определяет, как данные хранятся в памяти и передаются между переменными.

Примитивные типы

Примитивные типы - это неизменяемые значения, которые хранятся непосредственно в памяти и передаются по значению. Существует 7 примитивных типов:

1. Number

Числовой тип для целых чисел и чисел с плавающей запятой:

const integer = 42;
const float = 3.14;
const negative = -100;
const infinity = Infinity;
const notANumber = NaN; // special number value

2. String

Строковые данные, неизменяемые последовательности символов:

const single = hello;
const double = "world";
const template = `Hello, ${name}`;
const empty = "";

3. Boolean

Логические значения true или false:

const isTrue = true;
const isFalse = false;
const result = 5 > 3; // true

4. Undefined

Тип переменной, которой не присвоено значение:

let x;
console.log(x); // undefined
function test() {} // return undefined if no explicit return

5. Null

Осознанное отсутствие значения:

const empty = null;
const user = null; // explicitly set to no value

6. Symbol

Уникальный идентификатор (введён в ES6):

const symbol1 = Symbol(id);
const symbol2 = Symbol(id);
console.log(symbol1 === symbol2); // false - каждый уникален

7. BigInt

Числа произвольной длины для работы с большими целыми числами:

const big = 12345678901234567890n;
const another = BigInt("999999999999999999");
// Нельзя смешивать с обычными числами без преобразования

Объектные типы (Ссылочные)

Объектные типы передаются по ссылке и хранятся в памяти как указатели. Главный тип - Object, но есть различные его разновидности:

1. Object (обычный объект)

Коллекция пар ключ-значение:

const user = {
  name: "John",
  age: 30,
  email: "john@example.com"
};

const empty = {};
const dynamic = Object.create(null);

2. Array

Упорядоченная коллекция элементов:

const numbers = [1, 2, 3, 4, 5];
const mixed = [1, "text", true, null];
const nested = [[1, 2], [3, 4]];

3. Function

Функции - это объекты первого класса в JavaScript:

function greet(name) {
  return `Hello, ${name}`;
}

const arrow = (x) => x * 2;
const anonymous = function() { return 42; };

4. Date

Объект для работы с датой и временем:

const now = new Date();
const specific = new Date(2024-01-15);
const timestamp = new Date().getTime();

5. RegExp

Объект для работы с регулярными выражениями:

const pattern = /hello/i;
const regex = new RegExp(world, g);
const matched = Hello World.match(pattern);

6. Error

Объекты ошибок для обработки исключений:

const error = new Error(Something went wrong);
const typeError = new TypeError(Invalid type);
throw error;

7. Map и Set

Современные структуры данных (ES6+):

const map = new Map();
map.set(key, value);

const set = new Set([1, 2, 3, 3]);
console.log(set.size); // 3 - дубликаты удалены

Ключевые различия

Самое важное различие между примитивами и объектами - это способ хранения в памяти:

// Примитивы - передача по значению
let a = 10;
let b = a; // копирование значения
b = 20;
console.log(a); // 10 - a не изменилось

// Объекты - передача по ссылке
let obj1 = { value: 10 };
let obj2 = obj1; // копирование ссылки на тот же объект
obj2.value = 20;
console.log(obj1.value); // 20 - объект изменился для обоих переменных

Понимание этой разницы критично для написания корректного кода и избегания ошибок при работе с данными в JavaScript.