> В чем разница ссылочных и примитивных типов данных в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: EdenAI, Purrweb, SmartWay, ООО Снэп АйТи

Стек: JavaScript

> Пример ответа

Основное различие между примитивными и ссылочными типами в JavaScript заключается в способе хранения и передачи данных.

Примитивные типы (number, string, boolean, undefined, null, symbol, bigint) хранятся непосредственно в стеке (stack) и передаются по значению. При присваивании или передаче в функцию создается независимая копия значения.

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

Ссылочные типы (объекты, массивы, функции) хранятся в куче (heap), а переменная содержит ссылку (указатель) на этот объект. При присваивании копируется ссылка, а не сам объект, поэтому обе переменные указывают на один и тот же объект в памяти.

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

Ключевые следствия:

  • Сравнение примитивов происходит по значению (5 === 5true).

  • Сравнение ссылочных типов происходит по ссылке (два разных объекта с одинаковыми полями не равны: {} === {}false).

  • Примитивы иммутабельны (неизменяемы), а объекты мутабельны (их свойства можно менять).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью