¿Cómo entiendes qué es la transferencia por referencia?
sobes.tech AI
Respuesta de la IA
En JavaScript, los tipos de datos primitivos (cadenas, números, valores booleanos, null, undefined, Symbol, BigInt) se pasan por valor. Esto significa que al asignar o pasar a una función, se copia el valor en sí.
Los objetos (incluidos arreglos y funciones) se pasan y copian por referencia. En realidad, se copia no el objeto en sí, sino la referencia a la zona de memoria donde se almacena.
// Paso por valor
let a = 10;
let b = a; // Se copia el valor 10
b = 20;
console.log(a); // 10, cambiar 'b' no afecta a 'a'
// Paso por referencia
let obj1 = { value: 10 };
let obj2 = obj1; // Se copia la referencia al objeto
obj2.value = 20;
console.log(obj1.value); // 20, cambiar a través de 'obj2' afecta a 'obj1', ya que apuntan al mismo objeto
Al pasar un objeto a una función, la función recibe una copia de la referencia. Cambiar las propiedades del objeto dentro de la función afectará al objeto original, porque la referencia es la misma. Sin embargo, si dentro de la función se asigna un nuevo objeto a la variable, la variable original permanecerá sin cambios, ya que la referencia apuntará a otra área de memoria.
function modifyObject(obj) {
obj.newValue = 30; // Modifica el objeto original
}
function assignNewObject(obj) {
obj = { anotherValue: 40 }; // La variable 'obj' dentro de la función ahora apunta a un nuevo objeto
}
let myObject = { initialValue: 10 };
modifyObject(myObject);
console.log(myObject); // { initialValue: 10, newValue: 30 }
let anotherObject = { initialValue: 10 };
assignNewObject(anotherObject);
console.log(anotherObject); // { initialValue: 10 }, el objeto original no cambió