Datos mutables e inmutables en JavaScript

Datos mutables e inmutables en JavaScript

El término mutabilidad significa cambiar, el concepto de mutabilidad solo se puede aplicar a los objetos y a las matrices en JavaScript. El concepto de mutabilidad no se puede aplicar a datos primitivos como cadena, booleano, número, etc. Mientras que los datos inmutables se refieren a datos primitivos cuyo estado no se puede cambiar. En esta publicación, comprenderemos la diferencia entre datos mutables y datos inmutables con la ayuda de algunos ejemplos.

Antes de dirigirnos hacia datos mutables o datos inmutables, inicialmente, necesitamos aclarar el concepto de almacenamiento de datos en las variables de JavaScript. Las variables en JavaScript son capaces de almacenar dos tipos de valores de tipo primitivo o tipo de referencia. Un total de siete tipos de datos primitivos están disponibles en JavaScript, mientras que hay tres tipos de datos de referencia. La principal diferencia entre ellos es, en el tipo de datos primitivos, la memoria se asigna en la pila, mientras que en el tipo de datos de referencia se asigna la memoria en el montón. Entonces, en resumen, el tipo de datos primitivos es el tipo de datos base, mientras que el tipo de datos de referencia es el objeto compuesto por varias características y estos objetos se pasan como referencia.

Datos mutables en JavaScript

Los objetos mutables se pueden modificar o revisar después de su creación, pero deben recordar, un objeto puede tener dos referencias, y también es posible que haya dos objetos con las mismas propiedades. Entonces, múltiples referencias para un objeto y dos objetos con características similares son dos cosas diferentes.

Implementación de datos mutables en JavaScript

Consideremos un ejemplo para comprender la mutabilidad en JavaScript.

Deje que el empleado1 = nombre: "Joe Clarke", edad: 35, id: 123, ciudad: 'Londres';
Deje que el empleado2 = empleado1;
Deje que el empleado3 = nombre: "Joe Denly", edad: 25, id: 121, ciudad: 'Birmingham';
consola.Log ("Compruebe si Empleado1 = Empleado2", Empleado1 === Empleado2);
consola.Log ("Compruebe si Empleado1 = Empleado3", Empleado1 === Empleado3);

Creamos un objeto llamado empleado y lo asignamos algunas propiedades, en la segunda línea se creó otro objeto nombrado empleado2 y lo asignamos empleado, lo que significa que el empleado2 tendría las mismas propiedades que el empleado. Luego creamos otro empleado y le asignamos algunas propiedades diferentes. A continuación, verificamos si "Empleado2" tiene las mismas propiedades que "Empleado" o no.

La salida del código anterior será:

Ahora, veamos qué sucede si cambiamos el valor de "Empleado1", afectará las propiedades de "Empleado2"? Vamos a modificar nuestro código:

Deje que el empleado1 = nombre: "Joe Clarke", edad: 35, id: 123, ciudad: 'Londres';
Deje que el empleado2 = empleado1;
empleado1.nombre = "Dean Elgar";
consola.log ("Valores actualizados de Empleado1:", Empleado1);
consola.log ("Valores actualizados de Empleado2:", Empleado2);

Modificemos el ejemplo anterior, por ejemplo, cambiemos el nombre del empleado1 de "Joe Clarke" a "Dean Elgar", y verifique si afecta la propiedad de nombre de Empleado2 o no.

La salida de nuestro código modificado será:

Desde la salida dada anteriormente, podemos ver que los cambios que realizamos en la propiedad de Empleado1 también afectan el valor de Empleado2, esto sucede porque Employee2 se creó con la referencia de Empleado1.

Datos inmutables en JavaScript

La inmutabilidad se refiere a los valores primitivos como la cadena o el número, etc. y en JavaScript, no podemos modificarlos, pero podemos reasignarlos con algunos valores nuevos.

Implementación de datos inmutables en JavaScript

El ejemplo dado a continuación lo ayudará a comprender los tipos de datos inmutables.

var empleado1 = 'daniel';
var empleado2 = empleado1;
consola.log ("Nombre del primer empleado:", Empleado1);
consola.log ("Nombre del segundo empleado:", Empleado2);

Creamos una variable y le asignamos un valor. Luego creamos otra variable y la asignamos la primera variable como se resalta en la captura de pantalla dada por debajo.

Ahora examinemos la salida, verá que ambas variables muestran la misma salida:

Ahora cambie el valor de "Empleado2" y observe, ¿cambiará el valor de "Empleado1" o el valor para la primera variable seguirá siendo el mismo:

var empleado1 = 'daniel';
var empleado2 = empleado1;
consola.log ("Nombre del primer empleado:", Empleado1);
consola.log ("Nombre del segundo empleado:", Empleado2);
var empleado2 = 'Bryn';
consola.log ("Nombre actualizado del primer empleado:", Empleado1);
consola.log ("Nombre actualizado del segundo empleado:", Empleado2);

Asignamos 'Bryn' a la segunda variable:

Ahora, observe la salida:

El ejemplo aclara que cuando cambiamos el valor de Empleado2, observamos que cambiar el nombre de la segunda variable no afecta el valor de la primera variable, lo que significa que JavaScript los trata a ambos como variables separadas, y en realidad reasigna el valor a la segunda variable.

Consideraremos otro ejemplo para descubrir los datos inmutables en JavaScript.

var str = "hola";
consola.log ("cadena original:", str);
stri.tOUPPERCASE ();
consola.log ("Cadena después del método de ToupperCase:", str);

Tomamos una variable de cadena y le asignamos un valor "hola", luego utilizamos un método de cadena "toupper". Al ejecutar el programa, observamos que no cambió la cadena porque en las cadenas de JavaScript son tipos de datos inmutables y no se pueden modificar después de la creación.

La salida del código anterior será:

Puede notar que ToupperCase no cambia las letras minúsculas a las letras de mayúsculas y mayúsculas porque no podemos modificar los datos inmutables después de su creación.

Conclusión

Los datos mutables se pueden modificar en cualquier punto, mientras que los datos inmutables se contradicen con los datos mutables, lo que significa que las cosas mutables no se pueden cambiar. En esta publicación, explicamos la diferencia entre los tipos de datos primitivos con tipos de referencia. Luego entendemos la idea de datos mutables e inmutables, para este propósito tomamos algunos ejemplos y los implementamos en JavaScript. Finalmente, podemos concluir que si cambiamos un valor de la variable de referencia también mutará el valor original, pero la variable primitiva no muta.