Sobes.tech
Junior

¿Cómo funciona la transferencia de datos por referencia y por valor?

sobes.tech AI

Respuesta de la IA

La transferencia de datos por valor (por valor) y por referencia (por referencia) determina cómo cambia la variable original al pasarla a una función o al asignarla.

Transferencia por valor:

Se crea una copia del valor de la variable. Cualquier cambio en esta copia dentro de la función o al asignarla no afecta a la variable original. Es adecuada para tipos de datos primitivos (números, cadenas, valores booleanos, null, undefined, Symbol, BigInt).

// Transferencia por valor
let a = 10;

function modifyValue(num) {
  num = 20; // Se cambia la copia
}

modifyValue(a);
console.log(a); // Mostrará 10 - el valor original no cambió

Transferencia por referencia:

No se pasa el valor en sí, sino una referencia (dirección en memoria) a ese valor. Los cambios realizados a través de esta referencia afectan a la variable original. En JavaScript se usa para objetos (incluidos arreglos y funciones). Es importante entender que no se pasa el objeto en sí, sino una referencia a él. Al reasignar un parámetro dentro de la función, a la referencia se le asigna un nuevo valor, pero la variable original no cambia.

// Transferencia por referencia (para objetos)
let obj1 = { value: 10 };

function modifyObject(obj) {
  obj.value = 20; // Se modifica la propiedad del objeto por referencia
}

modifyObject(obj1);
console.log(obj1.value); // Mostrará 20 - el objeto original cambió
// Ejemplo de reasignación del parámetro al pasar un objeto
let obj2 = { value: 10 };

function reassignObject(obj) {
  obj = { value: 30 }; // obj ahora referencia a un nuevo objeto en el ámbito local de la función
}

reassignObject(obj2);
console.log(obj2.value); // Mostrará 10 - el objeto original no cambió
Característica Transferencia por valor Transferencia por referencia
Qué se pasa Copia del valor Referencia al valor
Impacto en el original No Sí (al cambiar propiedades)
Tipos de datos en JS Primitivos Objetos