Voglio passare un argomento a una funzione chiamata utilizzando setTimeout
. Ho trovato queste tre opzioni:Come posso passare un argomento a una funzione chiamata usando setTimeout?
A = 1;
// Method 1: closure things
setTimeout(function() { whatsA(A); }, 100);
// Method 2: third argument (same result with [A])
setTimeout(whatsA, 100, A);
// Method 3: eval
setTimeout('whatsA(' + A + ')', 100);
A = 2;
function whatsA(X) { console.log(X); }
Questo dimostra 2
, undefined
e 1
in Internet Explorer 9.
Metodo 1: Chiaramente, non vorrei l'argomento di essere cambiato dopo il superamento di esso (certamente nel caso di numeri interi semplici).
Metodo 2: Ciò sarebbe perfetto se solo Internet Explorer lo supportasse.
Metodo 3: questa sembra essere l'unica scelta. Ma sembra piuttosto meno carino degli altri, passando qualcosa da valutare piuttosto che una funzione.
C'è un modo migliore?
Metodo 3 è quello che si dovrebbe ** mai ** usare. E il Metodo 2 è deprecato anche nei browser gecko - quindi anche senza supportare IE è praticamente impossibile. – ThiefMaster