En JavaScript, una variable puede almacenar dos tipos de valores, valores primitivos o valores de referencia. Este artículo describirá y ayudará a comparar ambos tipos de valores.
1. Valor primitivo: JavaScript proporciona seis tipos de valores primitivos que incluyen Número, String, Booleano, Indefinido, Símbolo y BigInt. El tamaño de los valores primitivos es fijo, por lo tanto, JavaScript almacena el valor primitivo en la pila de llamadas (contexto de ejecución).
Cuando accedemos a un valor primitivo, manipulamos el valor real almacenado en esa variable. Por lo tanto, las variables que son primitivas son accedidas por Valor. Cuando asignamos una variable que almacena un valor primitivo a otra, el valor almacenado en la variable se crea y se copia en la nueva variable.
Tomemos un ejemplo para entender el valor primitivo:
Javascript
let age = 30; let age1 = age; // Pointing to age console.log(`age = ${age} age1 = ${age1}`); age = 31; // Pointing to new address console.log(`age = ${age} age1 = ${age1}`);
Producción:
age = 30 age1 = 30 age = 31 age1 = 30
2. Valor de referencia: JavaScript proporciona tres tipos de valores de referencia que incluyen array, objeto y función. El tamaño de un valor de referencia es dinámico, por lo tanto, se almacena en Heap .
Cuando accedemos a un valor de referencia, lo manipulamos a través de la referencia, no a través de su valor real que se almacena. Por lo tanto, las variables que son valores de referencia se acceden por referencia . Cuando asignamos un valor de referencia de una variable a otra, el valor almacenado en la variable también se copia en la ubicación de la nueva variable, pero la diferencia es que los valores almacenados en ambas variables ahora son la dirección del objeto real almacenado en el montón. Como resultado, ambas variables hacen referencia al mismo objeto, por lo que podemos manipular el objeto original desde ambas variables.
Tomemos un ejemplo para entender el valor de referencia:
Javascript
let info = { Name :"Abc", Age :10 } console.log(`Name : ${info.Name} Age : ${info.Age}`); let info1 = info; info1.Age = 14; // Change the Age of original object console.log(`Name : ${info.Name} Age : ${info.Age}`);
Producción:
Name : Abc Age : 10 Name : Abc Age : 14