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 oggetti vengono passati per riferimento, mentre le variabili 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 è dovuto al fatto che myParam nella funzione fa riferimento allo stesso oggetto (passaggio per riferimento).
Il passaggio delle variabili ad una funzione avviene 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.