Conflitto Variabili delle funzioni

WebDeveloper3

Nuovo Utente
24 Ott 2012
14
0
0
Ciao,

ho un problema con le variabili dichiarate all'interno di una funzione. Se richiamo la funzione diverse volte di seguito, la seconda esecuzione della funzione interferisce con la prima.
Ovvero se dichiaro un contatore n che va da 0 a 20, se quando n=10 richiamo la funzione su un'altro oggetto n della prima chiamata viene reinizializzato.

Insomma si comporta come se le variabili fossero globali. Come faccio a dirgli di creare variabili locali diverse per ogni chiamata della funzione???
 

WebDeveloper3

Nuovo Utente
24 Ott 2012
14
0
0
Avevo dichiarato le variabili nella funzione senza la parola chiave var, quindi erano globali, non locali come pensavo, ecco il problema.

Ora ho inserito var ma è sorto un'altro probolema (Il codice postato è un contatore esemplificativo):

Codice:
function f1(e) {
    var xxx = 5;
    f2(e, 0);
    
}

function f2(e, risultato) {
    risultato = risultato + 1;
    if (risultato != e) setTimeout(function(){f2(e, risultato)}, 50);
    else {
        alert(risultato);
    }
}
la variabile xxx non è visibile in f2(). Lo scope diversamente da altri linguaggi a cui ero abituato non comprende le funzioni richiamate da quella in questione.
Nel mio codice reale inizializzo in f1 più di 20 variabili. Non c'è altro modo che passarle per parametro per farle leggere a f2???
 
Ultima modifica di un moderatore:

alessandro1997

Utente Attivo
6 Ott 2009
5.303
1
0
22
Roma
alessandro1997.netsons.org
In quale linguaggio lo scope riguarda anche le funzioni chiamate dalla principale? Comunque puoi passarle come parametro oppure usare un hash:
Codice:
function f1()
{
    f2({
        var1: 'val1',
        var2: 'val2',
        var3: 'val3'
        // ...
    });
}

function f2(params)
{
    alert(params['val1']);
    alert(params['val2']);
    alert(params['val3']);
    // ...
}