Передача объектов по ссылке в JavaScript
Массивы и объекты несколько отличаются от остальных примитивных типов данных. Отличие в том, что переменная, хранящая массив, на самом деле не содержит его, а просто ссылается на него.
На практике это означает, что при записи объекта в другую переменную, обе переменных будут ссылаться на один и тот же объект. Давайте попробуем на практике. Пусть у нас есть следующий объект:
let obj1 = {a: 1, b: 2, c: 3};
Присвоим его из одной переменной в другую:
let obj2 = obj1;
Изменим одну из переменных:
obj2.a = '!';
В результате изменения будут видны и в другой переменной:
console.log(obj1); // {a: '!', b: 2, c: 3}
Не запуская код, определите, что выведется в консоль:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
console.log(arr2);
Не запуская код, определите, что выведется в консоль:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[1] = 'b';
console.log(arr1);
Не запуская код, определите, что выведется в консоль:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[0] = 'b';
console.log(arr2);