Что такое ссылочные типы?
Основы языка
Ссылочные типы — это объекты (включая массивы и функции), которые хранятся в куче и передаются по ссылке, а не по значению.
Что относится
- Объекты
{}. - Массивы
[]. - Функции.
Date,Map,Set,RegExpи другие встроенные объекты.
Передача по ссылке
Переменная хранит не сам объект, а ссылку на него. Копирование переменной копирует ссылку, а не объект:
const a = { x: 1 };
const b = a; // копия ссылки, тот же объект
b.x = 99;
a.x; // 99 — общий объектСравнение — по ссылке
Два разных объекта с одинаковым содержимым не равны:
{} === {}; // false — разные ссылки
const o = {}; o === o; // true — та же ссылкаСледствия
- Мутация общего объекта видна везде, где на него ссылаются.
- Для независимой копии нужно клонировать (
{...obj},structuredClone). - Аргумент-объект передаётся в функцию по ссылке — функция может его изменить.
Ссылочные против примитивов
Примитивы (number, string, ...) копируются по значению и иммутабельны; ссылочные — по ссылке и изменяемы.
Коротко для собеседования
Ссылочные типы — объекты, массивы, функции: хранятся в куче, передаются и сравниваются по ссылке. Копия переменной делит объект, мутация видна всем; сравнение === истинно только для одной и той же ссылки.