¿Los valores se pasan por referencia o por valor en JavaScript?

¡La respuesta es, depende!

Los tipos primitivos se pasan por valor.

Los objetos se pasan por referencia.

Los tipos primitivos son números, cadenas, valores booleanos, nulos, indefinidos y símbolos.

Todo lo que no es de tipo primitivo es unobjeto. Las matrices son objetos. Las funciones son objetos.

Cuando pasa un número a una función, se copia en la función:

const increment = num => {
  num = num + 1
}

const num = 2 increment(num)

console.log(num) //2

Si pasa un objeto, se pasa por referencia, por lo que si modifica una de sus propiedades, también se modifica el objeto original:

const increment = num => {
  num.value = num.value + 1
}

const num = { value: 2 }

increment(num)

console.log(num.value) //3


Más tutoriales de js: