Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    25

    passaggio di parametri per riferimento javascript

    scusate sono un mediocre conoscitore del c++ e mi ricordo che potevo passare dei parametri per riferimento in una funzione es:
    void somma(a,b,&c){c=a+b;}
    A=10;
    B=20;
    C=0;
    somma(A,B,C);
    cout<<C;
    ora sto cercando di fare la stessa cosa in javascript e dopo tante ricerche non riesco comunque a trovare un modo per farlo, quindi la domanda è: esiste un modo per fare questa cosa in javascript?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se ho capito il problema potresti utilizzare la funzione eval() http://www.devguru.com/technologies/javascript/11460

    Dato che i miei ricordi latitano... vuoi utilizzare il valore della variabile il cui nome sta in c ? oppure vuoi che qualunque modifica al contenuto della variabile c si ritrovi anche all'esterno della funzione ?
    Ultima modifica di br1; 23-07-2016 a 14:34
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    25
    si la seconda, ho visto la funzione eval e non è proprio quello che mi serve

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se definisci la variabile prima di richiamare la funzione ottieni quello che cerchi... vedi questo esempio:
    codice:
    A = 10;
    B = 20;
    C = 0;
    c = "?";
    
    
    x = somma(A,B,C);
    alert("C="+C+" c="+c);
    
    
    function somma(a,b,c) {
        C = A+B;
        c = A*B; // tanto per avere qualcosa di diverso 
    }
    ps: ovviamente la variabile C non e' necessario passarla come parametro
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Poi prova questa:
    codice:
    A = 10;
    B = 20;
    C = 0;
    n = "C";
    
    somma(A,B,n);
    alert("C="+C);
    
    function somma(a,b,c) {
        eval(n+"=a+b;")
    }
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    purtroppo ho mediocre conoscenze di javascript.

    non credo che si possano passare parametri per riferimento in javascript ma, se ricordo bene, si può passare un oggetto, sempre per value, non per riferimento e si possono modificare gli elementi dell'oggetto.

    codice:
    function Button1_onclick()
    {
        var a = 1;
        var b = 2;
        var c = 0;
    
        var o = {a: a, b: b, c: c};
    
        somma(o)
        alert(o.c)
    
    }
    
    function somma(o)
    {
        o.c = o.a + o.b;
    }
    Pietro

  7. #7
    In JavaScript gli oggetti vengono sempre passati, alla funzione, per referenza (cioè, non viene creato un duplicato dell'oggetto da usare all'interno della funzione) a differenza degli altri tipi di dato che, invece, vengono passati "per copia", cioè duplicati.

    Premesso questo, se hai bisogno che la tua funzione modifichi la variabile passata come parametro, puoi wrappare la variabile all'interno di un oggetto, come hai mostrato nel tuo esempio, oppure, come ti ha indicato br1, puoi usare una variabile globale, cioè, una variabile definita nello scope principale e quindi visibile e modificabile da tutte le funzioni.

    Una variabile globale, essendo visibile e modificabile da tutte le funzioni, si comporta come se venisse implicitamente "passata per referenza" a tutte le funzioni, anche se si tratta di una variabile di tipo integer o string.

    Il tuo script diventerebbe:

    codice:
    var a = 1;
    var b = 2;
    var c = 0;
    
    function Button1_onclick()
    {
        c=a+b; /* operazione che modifica la variabile "c" globalmente */
        alert_c();
    }
    
    function alert_c(){
        alert(c); /* l'alert restituirà: 3 */
    }
    Ultima modifica di lucavizzi; 24-07-2016 a 17:29

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.