我無法找到更多關於這個默認參數,我碰到並希望有人能指出一個解釋。Firefox setTimeout(func,ms)發送默認參數給回調
在Firefox(3.6在這種情況下),如果調用下面的代碼:
function test(someVar) {
console.log('test ' + someVar);
}
setTimeout(test, 0);
它會記錄一個「隨機」數到控制檯。我知道你可以在Firefox中傳遞參數,如下所示:
setTimeout(test, 0, param1, param2);
但似乎Firefox自動發送一個值。我認爲它是超過請求的通話時間的毫秒數,但我不能確定。 (EG:now()+ 0ms == now(),但是由於它現在不能調用,它會等待執行隊列並返回那個時間以後的ms數)?如果我將超時值設置爲500ms,它通常會返回0除非我有一個很長的腳本背後。
我也知道Firefox會將超時請求鉗位到10ms,並且放入0將使其默認爲10ms。如果這個值是一個'延遲值'(即:它比我們的要求長126ms)是基於我輸入的值(0)還是鉗制的最小值?
下面的一個答案表明這是計時器句柄。以下代碼反駁了(?):
function test(someVar) {
console.log('test ' + someVar);
}
console.log('Timer ' + setTimeout(test, 0));
這將返回兩個不同的值。
當然,它會在IE瀏覽器,所以我不寫一個期望它的代碼返回undefined
,但我很好奇。
(這實際上是一些代碼,我正在上依賴於可選參數調用函數導致一個錯誤。曾在IE瀏覽器,而不是FF)
投票你。感謝您的鏈接,但我打算將Satyajit作爲答覆者,因爲他們是第一位。 (抱歉!) – Andir 2011-03-21 20:57:39