Что такое ссылочные типы данных и чем они отличаются от не ссылочных? Что значит передаваться по ссылке?

Передача данных по значению (by value) и по ссылке (by reference) определяет, как изменяется оригинальная переменная при передаче ее в функцию или при присваивании.

Короткий ответ

Что ответить на собеседовании

Передача данных по значению (by value) и по ссылке (by reference) определяет, как изменяется оригинальная переменная при передаче ее в функцию или при присваивании.

Подробный разбор

Ответ с пояснениями

Передача данных по значению (by value) и по ссылке (by reference) определяет, как изменяется оригинальная переменная при передаче ее в функцию или при присваивании.

Передача по значению:

Создается копия значения переменной. Любые изменения этой копии внутри функции или при присваивании не влияют на оригинальную переменную. Подходит для примитивных типов данных (числа, строки, булевы значения, null, undefined, Symbol, BigInt).

// Передача по значению
let a = 10;

function modifyValue(num) {
  num = 20; // Изменяется копия
}

modifyValue(a);
console.log(a); // Выведет 10 - оригинальное значение не изменилось

Передача по ссылке:

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

// Передача по ссылке (для объектов)
let obj1 = { value: 10 };

function modifyObject(obj) {
  obj.value = 20; // Изменяется свойство объекта по ссылке
}

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

function reassignObject(obj) {
  obj = { value: 30 }; // obj теперь ссылается на новый объект в локальной области видимости функции
}

reassignObject(obj2);
console.log(obj2.value); // Выведет 10 - оригинальный объект не изменился
Характеристика Передача по значению Передача по ссылке
Что передается Копия значения Ссылка на значение
Влияние на оригинал Нет Да (при изменении свойств)
Типы данных в JS Примитивные типы Объекты

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку