¿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 |