PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

В чем разница между типами данных в JavaScript?

Основы языка

Типы данных в JavaScript делятся на примитивы и объекты, которые по-разному хранятся и передаются: примитивы по значению, объекты по ссылке.

Примитивы (7 типов)

string, number, bigint, boolean, undefined, null, symbol.

  • Передаются по значению — копия независима.
  • Иммутабельны — нельзя изменить, только заменить.
  • Сравниваются по значению.
let a = 5;
let b = a; // копия
b = 10;
a; // 5

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

Объекты, массивы, функции, Date, Map, Set.

  • Передаются по ссылке — копия делит объект.
  • Изменяемы.
  • Сравниваются по ссылке.
const o1 = { x: 1 };
const o2 = o1;
o2.x = 9;
o1.x; // 9 — общий объект
{} === {}; // false

Практические следствия

  • Мутация общего объекта видна везде → для копии нужно клонирование.
  • Объект-аргумент передаётся по ссылке.
  • typeof определяет тип (кроме typeof null === 'object').

Коротко для собеседования

Примитивы (7 типов) — по значению, иммутабельны, сравнение по значению. Объекты — по ссылке, изменяемы, сравнение по ссылке ({} !== {}). Отсюда: мутация общего объекта видна всем, для независимой копии нужно клонирование.

Другие вопросы раздела