Come capisci cosa è il passaggio per riferimento?
sobes.tech AI
Risposta dell'AI
In JavaScript, i tipi di dati primitivi (stringhe, numeri, valori booleani, null, undefined, Symbol, BigInt) vengono passati per valore. Ciò significa che, quando si assegna o si passa a una funzione, viene copiata la valore stesso.
Gli oggetti (inclusi array e funzioni) vengono passati e copiati per riferimento. In realtà, non viene copiato l'oggetto stesso, ma il riferimento all'area di memoria in cui esso si trova.
// Passaggio per valore
let a = 10;
let b = a; // Copia il valore 10
b = 20;
console.log(a); // 10, modificare 'b' non influisce su 'a'
// Passaggio per riferimento
let obj1 = { value: 10 };
let obj2 = obj1; // Copia il riferimento all'oggetto
obj2.value = 20;
console.log(obj1.value); // 20, modifiche tramite 'obj2' influenzano 'obj1' poiché puntano allo stesso oggetto
Quando si passa un oggetto a una funzione, la funzione riceve una copia del riferimento. Modificare le proprietà dell'oggetto all'interno della funzione influenzerà l'oggetto originale, perché il riferimento è lo stesso. Tuttavia, se all'interno della funzione si assegna un nuovo oggetto alla variabile, l'oggetto originale rimarrà invariato, poiché il riferimento punterà a un'altra area di memoria.
function modifyObject(obj) {
obj.newValue = 30; // Modifica l'oggetto originale
}
function assignNewObject(obj) {
obj = { anotherValue: 40 }; // La variabile 'obj' all'interno della funzione ora punta a un nuovo oggetto
}
let myObject = { initialValue: 10 };
modifyObject(myObject);
console.log(myObject); // { initialValue: 10, newValue: 30 }
let anotherObject = { initialValue: 10 };
assignNewObject(anotherObject);
console.log(anotherObject); // { initialValue: 10 }, l'oggetto originale non è cambiato