Hva er forskjellen mellom passering etter verdi og pass på referanse i JavaScript?

Hva er forskjellen mellom passering etter verdi og pass på referanse i JavaScript?
JavaScript er et programmeringsspråk som gir våre webapplikasjoner og websider muligheten til å tenke og handle ved å gjøre det interaktivt og dynamisk. Som alle andre programmeringsspråk, tilbyr JavaScript oss funksjoner som er et sett med definerte kommandoer eller utsagn som bare utføres når vi kaller funksjonen som har denne koden. Funksjonen tar en inngang eller noen argumenter og returnerer utgangen. Inngangsargumentene kan sendes med verdi eller referanse.

Så i dette innlegget vil vi definere begrepene "pass etter verdi" og "pass som referanse" sammen med eksempler i JavaScript, samt forklare forskjellene mellom de to.

Hva er pass-for-verdi?

En funksjon kalles direkte ved å sende verdien av variabelen som et argument hvis den funksjonen er pass-for-verdi. Som et resultat har eventuelle endringer i funksjonen ingen innvirkning på den første eller opprinnelige verdien. Den opprinnelige verdien blir ikke endret fordi når vi overfører variabelen til en funksjon som et argument, opprettes kopien av den variabelen, og derav eventuelle endringer eller operasjoner som utføres i denne funksjonen, blir gjort på kopieringsvariabelen i stedet for den originale.

Pass på verdieksempel

La oss lage en funksjon med navnet på PassbyValue og endre verdiene til variablene en og b som sendes som argumenter i denne funksjonen. Utenfor funksjonen initialiserer vi A- og B -variablene og gir dem henholdsvis 1 og 2 verdier. Så trøser vi disse verdiene.

funksjon passbyvalue (a, b)
a = 3;
B = 4;
konsoll.Logg ("Inne i funksjonen")
konsoll.log ("a:", a, "b:", b); // 3, 4

La a = 1;
La B = 2;
konsoll.Logg ("Utenfor funksjon. Før du ringer funksjon ");
konsoll.log ("a:", a, "b:", b); // 1,2
passbyvalue (a, b);
konsoll.Logg ("Utenfor funksjon. Etter å ha ringt funksjon ");
konsoll.log ("a:", a, "b:", b); // 1,2

Vi vil se at når vi konsollen logger verdiene til A og B utenfor funksjonen, vil den si 1 og 2. Inne i funksjonen vil imidlertid verdiene være 3 og 4 og igjen etter å ha kalt denne funksjonen verdiene vil ikke endres, da innenfor funksjonskopiene ble gjort av A og B og endringer ble gjort på disse kopiene.

Hva som er pass-for-referanse?

En funksjon kalles ved å levere variablens referanse/adresse som en parameter i Pass-by Reference. Som et resultat endrer du verdien i funksjonen også verdien utenfor funksjonen som er den opprinnelige verdien. Pass-by-Reference-funksjonen brukes i JavaScript-matriser og objekter.

Pass ved referanseeksempel

La oss initialisere et objekt og gi to egenskaper til det. Den ene egenskapen definerer navnet på maskinen og den andre “er på”Som lar oss få vite om maskinen er på eller ikke. Vi initialiserer også en funksjon med navnet på Passbyreference og endre verdien av datamaskinobjektegenskapene som navn og ison. Vi trøser deretter disse egenskapene før og etter å ha ringt funksjonen:

Funksjon PassbyReference (maskin)
maskin.name = "datamaskin";
maskin.ison = sant;

var datamaskin =
Navn: "Mycomputer",
ISON: Falske
;
konsoll.logg ("før du ringer funksjon");
konsoll.Logg (datamaskin.er på); // sant;
konsoll.Logg (datamaskin.Navn); // Datamaskin
PassbyReference (datamaskin);
konsoll.logg ("etter å ha ringer funksjon");
konsoll.Logg (datamaskin.er på); // sant;
konsoll.Logg (datamaskin.Navn); // Datamaskin

Vi kan se at kopier ikke ble laget i funksjonen og de opprinnelige egenskapene til datamaskinobjektet ble endret, og det sendes derfor med referanse.

Forskjell mellom passering etter verdi og passering av referanse

Den største forskjellen mellom passering etter verdi og passering av referanse er at PASS som referanse kommer i spill når vi tildeler primitiver og passerer etter verdi kommer i spill når vi tildeler objekter. Primitive datatyper inkluderer strengnumre, boolske, symboler og verdier som null og udefinert, og objektdatatypene inkluderer funksjoner, matriser og enkle objekter.

Den andre store forskjellen mellom de to er at pass-for-verdi skaper en kopi og deretter endres endringer i den kopien; Imidlertid er det ikke gjort noen kopi, og modifisering gjøres imidlertid på den opprinnelige variabelen.

Konklusjon

Vi kan gi verdier til en funksjon via pass etter verdi eller passere med referanse. Pass by Value gjøres på de primitive datatypene som streng, antall, boolsk, og hver gang du gir en variabel til en funksjon, oppretter den en kopi av den variabelen og endrer deretter den kopieringen i en passering etter verdi. Pass som referanse gjøres på objektdatatypen som funksjoner, matriser og vanlige objekter, og i passet som referanse, er den opprinnelige verdien endret ettersom passering av referanse ikke oppretter en kopi.

I dette innlegget så vi først hva som passerer etter verdi og passering av referanse er og forklarte både fenomenene ved hjelp av et eksempel og fortsatte deretter diskusjonen vår ved å svare på spørsmålet om hva som er forskjellen mellom passering etter verdi og gå forbi Henvisning i JavaScript.