Mutable og uforanderlige data i JavaScript

Mutable og uforanderlige data i JavaScript

Begrepet mutabilitet betyr endres, kan begrepet mutabilitet bare brukes på objekter og på matriser i JavaScript. Mutabilitetens konsept kan ikke brukes på primitive data som streng, boolsk, antall osv. Mens uforanderlige data refererer til primitive data hvis tilstand ikke kan endres. I dette innlegget vil vi forstå forskjellen mellom mutable data og uforanderlige data ved hjelp av noen eksempler.

Før vi drar mot mutable data eller uforanderlige data, må vi i utgangspunktet tydeliggjøre konseptet med lagring av data i JavaScript -variabler. Variablene i JavaScript er i stand til å lagre to typer verdier enten primitiv type eller referansetype. Totalt syv primitive datatyper er tilgjengelige i JavaScript, mens det er tre referansedatatyper. Hovedforskjellen mellom dem er, i primitiv datatype blir minnet tildelt i bunken, mens i referansedatatype er minnet tildelt i haugen. Så kort sagt, den primitive datatypen er basedatatypen, mens referansedatatypen er objektet som består av flere funksjoner, og disse objektene sendes som referanse.

Mutable data i JavaScript

Mutable objekter kan modifiseres eller revideres etter opprettelsen, men må huske, et objekt kan ha to referanser, og det er også mulig at det er to objekter med de samme egenskapene. Så flere referanser for ett objekt og to objekter med lignende egenskaper er to forskjellige ting.

Implementering av mutable data i JavaScript

La oss vurdere et eksempel for å forstå mutabiliteten i JavaScript.

La ansatt1 = navn: "Joe Clarke", alder: 35, id: 123, by: 'London';
La ansatt2 = ansatt1;
La ansatt3 = navn: "Joe Denly", alder: 25, id: 121, by: 'Birmingham';
konsoll.Logg ("Sjekk om ansatt1 = ansatt2", ansatt1 === ansatt 2);
konsoll.Logg ("Sjekk om ansatt1 = ansatt3", ansatt1 === ansattes3);

Vi opprettet et objekt som heter ansatt og tildelte det noen egenskaper, i den andre linjen ble et annet objekt opprettet med navnet Employee2 og vi tildelte IT Employee, noe som betyr at den ansatte2 ville ha de samme egenskapene som ansatt. Så oppretter vi en annen ansatt og tildeler den noen forskjellige egenskaper. Deretter sjekket vi om “ansatt2” har de samme egenskapene som “ansatt” eller ikke.

Utgang av kode ovenfor vil være:

La oss nå se hva som skjer hvis vi endrer verdien av "ansatt1", vil det påvirke egenskapene til "ansatt2"? La oss endre koden vår:

La ansatt1 = navn: "Joe Clarke", alder: 35, id: 123, by: 'London';
La ansatt2 = ansatt1;
Ansatt1.name = "Dean Elgar";
konsoll.logg ("Oppdaterte verdier av ansatt1:", ansatt1);
konsoll.logg ("Oppdaterte verdier av ansatt2:", ansatt2);

La oss endre det forrige eksemplet, for eksempel, endre ansattes1 -navnet fra “Joe Clarke” til “Dean Elgar”, og sjekk om det påvirker navnegenskapen til Ansatt2 eller ikke.

Utgangen for vår modifiserte kode vil være:

Fra ovennevnte produksjon kan vi se at endringer som vi gjør i egenskapen til Employee1 påvirker verdien av Ansatt2 også, dette skjer fordi Ansatt2 ble opprettet med referanse til Ansatt1.

Uforanderlige data i JavaScript

Uforanderlighet refererer til de primitive verdiene som streng, eller tall osv. Og i JavaScript kan vi ikke endre dem, men vi kan tilordne dem med noen nye verdier.

Implementering av uforanderlige data i JavaScript

Det undergitte eksemplet vil hjelpe deg å forstå de uforanderlige datatypene.

var ansatt1 = 'Daniel';
var ansatt2 = ansatt1;
konsoll.Logg ("Navn på første ansatt:", ansatt1);
konsoll.Logg ("Navn på andre ansatt:", ansatt2);

Vi opprettet en variabel og tildelte en verdi til den. Deretter opprettet vi en annen variabel og tildelte den den første variabelen som fremhevet i det giske skjermbildet under.

La oss nå undersøke utgangen, du vil se begge variable viser samme utgang:

Endre nå verdien av "ansatt2" og observere, vil den endre verdien av "ansatt1" eller verdien for den første variabelen vil forbli den samme:

var ansatt1 = 'Daniel';
var ansatt2 = ansatt1;
konsoll.Logg ("Navn på første ansatt:", ansatt1);
konsoll.Logg ("Navn på andre ansatt:", ansatt2);
var ansatt2 = 'Bryn';
konsoll.Logg ("Oppdatert navn på 1. ansatt:", ansatt1);
konsoll.Logg ("Oppdatert navn på 2. ansatt:", Ansatt2);

Vi tildeler 'Bryn' til den andre variabelen:

Nå, observer utgangen:

Eksemplet tydeliggjør at når vi endret verdien av ansatt2, observerte vi at å endre navnet på den andre variabelen ikke påvirker verdien av den første variabelen, noe som betyr at JavaScript behandler dem begge som separate variabler, og at det faktisk tildeler verdien til verdien til den andre variabelen.

Vi vil vurdere et annet eksempel for å finne ut de uforanderlige dataene i JavaScript.

var str = "hei";
konsoll.Logg ("Original String:", Str);
str.touppercase ();
konsoll.Logg ("Streng etter touppercase -metode:", STR);

Vi tok en strengvariabel og tildelte den en verdi “Hallo” så brukte vi en strengmetode “Toupper”. Etter å ha kjørt programmet observerte vi at det ikke endret strengen fordi i JavaScript -strengene er uforanderlige datatyper og de ikke kan endres etter opprettelse.

Utgangen fra ovennevnte kode vil være:

Du kan legge merke til at Touppercase ikke endrer små bokstaver til store bokstaver fordi vi ikke kan endre de uforanderlige dataene etter opprettelsen.

Konklusjon

Mutable data kan endres når som helst mens uforanderlige data strider mot de mutable dataene, noe som betyr at de mutable tingene ikke kan endres. I dette innlegget forklarte vi forskjellen mellom primitive datatyper med referansetyper. Så forstår vi ideen om mutable og uforanderlige data, for dette formålet tok vi noen eksempler og implementerte dem i JavaScript. Til slutt kan vi konkludere med at hvis vi endrer en verdi av referansevariabelen, vil den også mutere den opprinnelige verdien, men den primitive variabelen ikke muterer.