Transmiterea obiectelor prin referință în JavaScript

Array-urile și obiectele se diferențiază oarecum de celelalte tipuri de date primitive. Diferența constă în faptul că variabila care stochează array-ul, de fapt nu îl conține, ci doar face referire la acesta.

În practică, aceasta înseamnă că atunci când scriem un obiect într-o altă variabilă, ambele variabile vor face referire la același obiect. Să încercăm în practică. Să presupunem că avem următorul obiect:

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

Să-l atribuim dintr-o variabilă într-alta:

javascriptlet obj2 = obj1;

Să modificăm una dintre variabile:

javascriptobj2.a = '!';

Ca rezultat, modificările vor fi vizibile și în cealaltă variabilă:

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

Fără a rula codul, determinați ce va fi afișat în consolă:

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

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

Fără a rula codul, determinați ce va fi afișat în consolă:

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

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

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

Fără a rula codul, determinați ce va fi afișat în consolă:

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

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

console.log(arr2);