我想將參數傳遞給使用setTimeout
調用的函數。我發現這三個選項:如何將參數傳遞給使用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); }
這說明2
,undefined
,並1
在Internet Explorer 9
方法1:很顯然,我不希望將參數傳遞後更改(當然在簡單整數的情況下)。
方法2:如果只有Internet Explorer支持它,這將是完美的。
方法3:這似乎是唯一的選擇。但它似乎不像其他人那麼漂亮,傳遞了一些需要評估的東西而不是一種功能。
有沒有更好的方法?
方法3是一個你應該**從不**使用。方法2即使在壁虎瀏覽器中也不推薦使用 - 所以即使沒有支持IE,它也幾乎是不可行的。 – ThiefMaster