> В чем разница ссылочных и примитивных типов данных в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: EdenAI, Purrweb, SmartWay, ООО Снэп АйТи
Стек: JavaScript
> Пример ответа
Основное различие между примитивными и ссылочными типами в JavaScript заключается в способе хранения и передачи данных.
Примитивные типы (number, string, boolean, undefined, null, symbol, bigint) хранятся непосредственно в стеке (stack) и передаются по значению. При присваивании или передаче в функцию создается независимая копия значения.
JAVASCRIPTlet a = 10;let b = a; // b получает копию значения 10b = 20;console.log(a); // 10 - a не изменилось
Ссылочные типы (объекты, массивы, функции) хранятся в куче (heap), а переменная содержит ссылку (указатель) на этот объект. При присваивании копируется ссылка, а не сам объект, поэтому обе переменные указывают на один и тот же объект в памяти.
JAVASCRIPTlet obj1 = { value: 10 };let obj2 = obj1; // obj2 получает ссылку на тот же объектobj2.value = 20;console.log(obj1.value); // 20 - объект изменился
Ключевые следствия:
-
Сравнение примитивов происходит по значению (
5 === 5→true). -
Сравнение ссылочных типов происходит по ссылке (два разных объекта с одинаковыми полями не равны:
{} === {}→false). -
Примитивы иммутабельны (неизменяемы), а объекты мутабельны (их свойства можно менять).
> Похожие задачи по frontend
В чем отличие null от undefined и когда их использовать в JavaScript
Почему JavaScript однопоточный
В чем разница между строгим и нестрогим сравнением в JavaScript и почему лучше использовать строгое?
Почему async функция возвращает Promise
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью