Il passaggio di parametri in JavaScript è molto simile ad altri linguaggi di programmazione ed avviene sia per valore che per riferimento
In JavaScript in una funzione gli non oggetti vengono mai passati per riferimento, così come per le variabili il passaggio avviene per valore. Vediamo qualche un esempio:
myField: 1
};
var myFunction = function(myParam) {
myParam.myField = 4;
console.log(myParam.myField); // => 4
};
myFunction(myObject);
console.log(myObject.myField); // => 4
Nell’esempio myObject rappresenta un oggetto con un campo myField che vale 1, mentre myFunction è una funzione in cui viene cambiato il valore myField con 4. Dopo aver eseguito la funzione è possibile notare come nella funzione il valore myField cambia e diventa 4, usciti dalla funzione anche il valore all’esterno è stato cambiato con 4. Questo comportamento non è dovuto al fatto che myParam nella funzione viene passatto come riferimento, ma la variabile myParam viene passata per valore, ma al suo interno abbiamo il riferimento della variabile, quindi qualsiasi modifica effettuata verrà applicata all’oggetto a cui si fa riferimento.
Il passaggio delle variabili ad una funzione avviene sempre per valore, ad esempio riprendendo l’esempio precedente:
myField: 1
};
var myFunction = function(myParam) {
myParam.myField = 4;
myParam = null;
};
myFunction(myObject);
console.log(myObject.myField); // => 4
Pur assegnando null all’interno di myFunction alla variabile myParam, quest’ultima essendo passata per valore non influenza il riferimento alla variabile esterna myObject. Vediamo un altro esempio di codice JavaScript:
var myFunction = function(myParam) {
myParam = 2;
};
myFunction(myVar);
console.log(myVar); // => 1
Pur modificando il valore myParam all’interno della funzione, la modifica non altera il valore esterno alla funzione di myVar in quanto il passaggio di parametri è stato effettuato per valore.