Назад к вопросам
Junior
72
questionbank

Как работает передача данных по ссылке и по значению?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Передача данных по значению (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 Примитивные типы Объекты