Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
06 Июл 2023
2 мин
1265

JavaScript: передача по значению или по ссылке?

Часто возникает путаница в понимании, как JavaScript передает аргументы в функции — по значению или по ссылке. Для начала, сгенерируем пример: В этом

Часто возникает путаница в понимании, как JavaScript передает аргументы в функции — по значению или по ссылке. Для начала, сгенерируем пример:

let a = 1;
let b = a;
b++;
console.log(a); // Вывод: 1
console.log(b); // Вывод: 2

В этом примере, переменная b получает значение переменной a, затем это значение изменяется, но исходное значение переменной a при этом не меняется. Это подтверждает, что примитивные типы данных в JavaScript передаются по значению.

Теперь рассмотрим случай с объектами:

let obj1 = { prop: 1 };
let obj2 = obj1;
obj2.prop++;
console.log(obj1.prop); // Вывод: 2
console.log(obj2.prop); // Вывод: 2

Здесь, на первый взгляд, кажется, что объекты передаются по ссылке, так как изменение свойства объекта obj2 приводит к изменению свойства исходного объекта obj1.

Однако, это не совсем так. В JavaScript все данные передаются по значению. В случае с объектами, значение — это ссылка на объект. Поэтому, когда мы присваиваем obj2 = obj1, мы копируем значение ссылки на объект, а не сам объект. В результате обе переменные указывают на один и тот же объект в памяти, и изменение свойств этого объекта через одну переменную влияет на его отображение через другую переменную.

Подводя итог, можно сказать, что JavaScript является языком с передачей данных по значению. Однако в случае с объектами, это значение представляет собой ссылку на объект.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий