Il passaggio dei parametri nelle funzioni JavaScript

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:

    var myObject = {
        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:

    var myObject = {
        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 myVar = 1;

    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.

Pubblicato in Front-end, JavaScript Taggato con: , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*