Digamos que tengo este código:
function MinMax(list) { const min = Math.min(...list); const max = Math.max(...list); return { min, max, list, }; } const massiveList = [ 1, // supposedly a gazillion // integer values 10000000, ]; const minMax = MinMax(massiveList); const minMaxList = minMax.list; console.log('min ', minMax.min); console.log('max ', minMax.max); console.log('minMaxList length', minMaxList.length);Aquí está mi pregunta: dado que los argumentos se pasan por valor en JavaScript, ¿eso significa que después de ese punto en el código, donde minMax.list se asigna a minMaxList , existen tres copias de la lista masiva original en la memoria del montón?
Puede probar la siguiente demostración con valor de referencia
const massiveList = [ 1, // supposedly a gazillion // integer values 10000000, ]; const testReference = (list) => { console.log(list === massiveList) //true } testReference(massiveList) En su caso, la list y la lista massiveList son la misma referencia, lo que significa que cualquier modificación en la list también se aplicará en la lista massiveList .
...list significa que ha clonado la lista original en otra lista que se asignará nuevamente en la memoria.
La siguiente demostración es para mostrar que los valores de referencia se cambian para la nueva lista, por eso el resultado es false
const massiveList = [ 1, // supposedly a gazillion // integer values 10000000, ]; const testReference = (list) => { const newList = [...list] console.log(list === newList) //false } testReference(massiveList)