Qual è la differenza tra pass per valore e pass per riferimento in javascript?

Qual è la differenza tra pass per valore e pass per riferimento in javascript?
JavaScript è un linguaggio di programmazione che offre alle nostre applicazioni Web e alle pagine Web la possibilità di pensare e agire rendendolo interattivo e dinamico. Come qualsiasi altro linguaggio di programmazione, JavaScript ci offre funzioni che sono un insieme di comandi o dichiarazioni definiti che vengono eseguiti solo quando chiamiamo la funzione che ha questo codice. La funzione prende un input o alcuni argomenti e restituisce l'output. Gli argomenti di input possono essere passati per valore o riferimento.

Quindi, in questo post, definiremo i termini "pass per valore" e "pass per riferimento" insieme ad esempi in JavaScript, oltre a spiegare le differenze tra i due.

Cos'è il passaggio pass-by-valore?

Una funzione viene chiamata direttamente inviando il valore della variabile come argomento se quella funzione è pass per valore. Di conseguenza, eventuali modifiche apportate all'interno della funzione non hanno alcun impatto sul valore iniziale o originale. Il valore originale non viene modificato perché quando passiamo la variabile in una funzione come argomento, viene creata la copia di quella variabile e quindi qualsiasi modifica o operazione eseguita all'interno di quella funzione viene eseguita sulla variabile di copia anziché in quella originale.

Esempio di valore per valore

Creiamo una funzione con il nome di PassbyValue e modificare i valori delle variabili UN E B che sono passati come argomenti in questa funzione. Al di fuori della funzione, inizializziamo le variabili A e B e diamo loro rispettivamente 1 e 2 valori. Quindi console registri questi valori.

funzione passByValue (a, b)
a = 3;
b = 4;
console.Log ("All'interno della funzione")
console.log ("a:", a, "b:", b); // 3, 4

Lascia che a = 1;
Sia b = 2;
console.Log ("Funzione esterna. Prima di chiamare la funzione ");
console.log ("a:", a, "b:", b); // 1,2
PassbyValue (a, b);
console.Log ("Funzione esterna. Dopo aver chiamato funzione ");
console.log ("a:", a, "b:", b); // 1,2

Vedremo che quando consolveremo i valori di a e b al di fuori della funzione dirà 1 e 2. Tuttavia, all'interno della funzione, i valori saranno 3 e 4 e di nuovo dopo aver chiamato questa funzione, i valori non cambieranno man mano che le copie della funzione sono state apportate a A e B e le modifiche sono state apportate a quelle copie.

Cos'è il pass-by-reference?

Una funzione viene chiamata fornendo il riferimento/indirizzo della variabile come parametro in Riferimento pass-by. Di conseguenza, la modifica del valore all'interno della funzione modifica anche il valore al di fuori della funzione che è il valore originale. La funzione pass-by-reference viene utilizzata in array e oggetti JavaScript.

Passare per esempio di riferimento

Inizializziamo un oggetto e diamo due proprietà ad esso. Una proprietà definisce il nome della macchina e l'altra "iSon"Il che ci fa sapere se la macchina è attiva o no. Inizializziamo anche una funzione con il nome di Passbyreference e modificare il valore delle proprietà dell'oggetto del computer come il nome e iSon. Quindi console registriamo queste proprietà prima e dopo aver chiamato la funzione:

funzione passbyreference (macchina)
macchina.name = "computer";
macchina.iSon = true;

var computer =
Nome: "MyComputer",
ISON: Falso
;
console.log ("prima della funzione di chiamare");
console.registro (computer.iSon); // VERO;
console.registro (computer.nome); // Computer
Passbyreference (computer);
console.log ("Dopo aver chiamato funzione");
console.registro (computer.iSon); // VERO;
console.registro (computer.nome); // Computer

Possiamo vedere che le copie non sono state realizzate nella funzione e le proprietà originali dell'oggetto del computer sono state modificate, quindi vengono passate per riferimento.

Differenza tra pass per valore e pass per riferimento

La differenza principale tra pass per valore e pass per riferimento è che il passaggio per riferimento entra in gioco quando assegniamo primitivi e pass per valore entra in gioco quando assegniamo oggetti. I tipi di dati primitivi includono numeri di stringa, booleano, simboli e valori come null e indefiniti e i tipi di dati degli oggetti includono funzioni, array e oggetti semplici.

La seconda grande differenza tra i due è che il pass per valore crea una copia e quindi vengono apportate modifiche a quella copia; Tuttavia, nella referenza pass-by non viene apportata alcuna copia e la modifica viene effettuata sulla variabile originale.

Conclusione

Possiamo passare i valori in una funzione tramite pass per valore o pass per riferimento. Passare per valore viene eseguito sui tipi di dati primitivi come stringa, numero, booleano e ogni volta che si passa una variabile a una funzione, crea una copia di quella variabile e quindi modifica quella copia in un passaggio per valore. Pass per riferimento viene eseguito sul tipo di dati oggetto come funzioni, array e oggetti semplici e nel passaggio per riferimento, il valore originale viene modificato come passaggio per riferimento non crea una copia.

In questo post, in primo luogo, abbiamo visto ciò che è passato per valore e il passaggio per riferimento è e spiegato sia i fenomeni con l'aiuto di un esempio e quindi abbiamo continuato la nostra discussione rispondendo alla domanda su quale sia la differenza tra pass per valore e passaggio Riferimento in JavaScript.