Передача объектов по ссылке в 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);