Passagem de objetos por referência em JavaScript

Arrays e objetos são um pouco diferentes de outros tipos de dados primitivos. A diferença é que uma variável que armazena um array, na verdade não o contém, mas apenas faz referência a ele.

Na prática, isso significa que ao atribuir um objeto a outra variável, ambas as variáveis farão referência ao mesmo objeto. Vamos experimentar na prática. Suponha que temos o seguinte objeto:

javascriptlet obj1 = {a: 1, b: 2, c: 3};

Vamos atribuí-lo de uma variável para outra:

javascriptlet obj2 = obj1;

Vamos modificar uma das variáveis:

javascriptobj2.a = '!';

Como resultado, as alterações serão visíveis na outra variável também:

javascriptconsole.log(obj1); // {a: '!', b: 2, c: 3}
Задание 1

Sem executar o código, determine o que será exibido no console:

javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;

arr1[0] = 'a';
console.log(arr2);
Задание 2

Sem executar o código, determine o que será exibido no console:

javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;

arr1[0] = 'a';
arr2[1] = 'b';

console.log(arr1);
Задание 3

Sem executar o código, determine o que será exibido no console:

javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;

arr1[0] = 'a';
arr2[0] = 'b';

console.log(arr2);