Sobes.tech
Назад к вопросам
Junior — Middle
91

Каким образом реализована передача аргументов при вызове функций в JavaScript?

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

sobes.tech AI

В JavaScript передача аргументов в функции реализована по значению для примитивных типов и по ссылке для объектов (но сама ссылка передаётся по значению).

  • Для примитивов (числа, строки, булевы значения) при вызове функции создаётся копия значения, и изменения внутри функции не влияют на внешнюю переменную.
  • Для объектов (объекты, массивы, функции) в функцию передаётся копия ссылки на объект, поэтому изменения свойств объекта внутри функции отражаются на оригинале.

Пример:

function modifyPrimitive(x) {
  x = 10;
}

function modifyObject(obj) {
  obj.value = 10;
}

let a = 5;
modifyPrimitive(a);
console.log(a); // 5 — не изменился

let b = { value: 5 };
modifyObject(b);
console.log(b.value); // 10 — изменился

Таким образом, аргументы передаются по значению, но для объектов это значение — ссылка на объект.