🥇 Asignación por valor vs referencia.

Cuando asignamos un valor a una variable en Javascript, el tipo de asignación depende del tipo de valor que estamos asignando.

  1. Abrimos nuevamente la terminal de node.

    $ node
    
  2. Vamos ahora a ejecutar la siguiente sentencia

    > var persona1 = 'Jose'
    > var persona2 = persona1
    > persona1 = 'Pedro'
    > console.log(persona2) // => Jose
    > console.log(persona1)  // => Pedro
    

    Nos damos cuenta que persona2 no esta ligado intrinsecamente con persona1, esto es una asignación por valor, que es basicamente cuando una variable toma el valor de otra y ocupa dicho espacio necesario para llenar ese valor en memoria.

  3. Ahora vamos a hacer lo mismo pero con un arreglo.

    > var personas1 = ['Pedro','Jose','Teresa']
    > var personas2 = personas1
    > personas1.push('Diego')
    > console.log(personas1) // ['Pedro','Jose','Teresa','Diego']
    > console.log(personas2) // ['Pedro','Jose','Teresa','Diego']
    

    En este caso, como vemos si modificamos el arreglo personas1, el arreglo personas2 tambien sufre una modificación. Ambas variables apuntan al mismo espacio en memoria (en realidad los arreglos son direcciones de otros espacios en memoria), cuando esto sucede la asignación se le conoce como asignación por referencia.

Javascript utiliza asignación por valor para los datos primitivos (strings, numeros, boleanos, etc) y asignación por referencia para objetos (clases, funciones, arreglos, colecciones {}, etc).

Herencia, prototipos y constructores. Scope.
comments powered by Disqus