https://medium.com/laboratoria-developers/por-valor-vs-por-referencia-en-javascript-de3daf53a8b9
const frutas = ['manzana', 'pera', 'kiwi']
const frutas2 = frutas // NO SE COPIA EL VALOR SE COPIA LA REFERENCIA Se apunta al mismo sitio
// Tanto frutas como frutas 2 son como una flecha que apunta al mismo contenido
// Si yo cambio fruta, también cambio fruta2
// Se suele decir que necesitamos 'clonar' el array
console.log(frutas)
console.log(frutas2)
frutas.push('melón')
console.log(frutas)
console.log(frutas2)
let a = 20
const b = a // Copiar el valor
a++
console.log(a) // 21
console.log(b) // 20
// a |20|
// frutas es un puntero al contenido del array
// frutas2=frutas lo que copio es la dirección no el contenido
const a = [1, 2, 3, 4]
console.log(sumaArray(a))
console.log(a)
// Esta función nos suma el array pero también nos lo destruye
// Porque no se pasa una copia se pasa el propio array
// la REFERENCIA al array. Mucho cuidado con esto
function sumaArray (array) {
let suma = 0
while (array.length > 0) {
suma += array.pop()
}
return suma
}
// SOlución
function sumaArrayBien (array) {
let suma = 0
const copia = array.slice()
while (copia.length > 0) {
suma += copia.pop()
}
return suma
}
function sumaSinModificacion (array) {
let suma = 0
for (const v of array) {
suma += v
}
return suma
}