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