Chcę przekazać argument do funkcji o nazwie przy użyciu setTimeout
. Znalazłem te trzy opcje:Jak przekazać argument do funkcji o nazwie 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); }
To pokazuje 2
, undefined
i 1
w programie Internet Explorer 9.
Metoda 1: Oczywiście, nie chciałbym argument zostać zmienione po minięciu go (oczywiście w przypadku prostych liczb całkowitych).
Metoda 2: Byłoby idealnie, gdyby obsługiwany był tylko Internet Explorer.
Metoda 3: To wydaje się być jedynym wyborem. Ale wydaje się raczej mniej ładny niż inne, przekazując coś do oceny, a nie funkcję.
Czy istnieje lepszy sposób?
metoda 3 jest tym, który powinien **nigdy nie używaj. A metoda 2 jest przestarzała nawet w przeglądarkach gecko - więc nawet bez wsparcia IE nie jest to łatwe. – ThiefMaster