Grazie per la risposta, in effetti è stato un errore abbastanza stupido quello di passare così i parametri...
Voglio usare il settimeout più che altro per "esercizio"...
Per passarli sto scoprendo ora le "closure" e devo dire che stento a capirle...
Soprattutto mi dico: se con la closure tengo "attivo" lo scope della funziona padre anche quando cessa mantenendo le variabili in memoria, tanto vale che le faccia direttamente globali no?
Ho anche visto molti esempi dove si usa la sintassi (function(param){})(param) di cui non ho trovato molto...
Come funziona? Fa un riferimento implicito alla funzione .call(funzione anomima, arg)?
E' giusto che trovi questo esempio tra quelli delle closure?
Questo è un esempio che ho trovato:
codice:
el.addEventListener('click', (function(str) { return function() {
alert(str);
}
})("Hello"), false);
Questo è un altro esempio:
codice:
var contents=["uno","due","tre","quattro"];
var els=document.getElementsByTagName('P');
for (var i=0; i < els.length; i++) {
els[i].onclick=(function(index) {
return function() {
this.innerHTML=contents[index];
}
})(i);
}
Di questo non capisco come funziona il "index" nella funzione che viene restituita runtime...
Sostituisce la variabile index con il suo valore quasi come fosse una costante?
Dopo avere eseguito quel for avrei quindi nella callback del click una funzione così:
[CODE]
function() {
this.innerHTML=contents[1]; <- 2 / 3 / 4, valori già settati
}
[/CODE]
Oppure al click del mouse risale allo scope dell'index della funzione?
In questo caso allora dovrebbe risalire all'ultimo valore della variabile index, quindi ad ogni P dovrebbe associare l'ultimo indice no?
Grazie
PS. del tuo codice non ho capito una cosa, se eseguirò la funzione intervallo dopo un tot di ms, ammettendo che la funziona "padre" sia già terminata, senza un closure o qualche altro stratagemma coma faccio a risalire al valore di ripeti (o è dichiarato senza var per essere volutamente globale)?