2010-01-21 15 views
3

剛剛遇到此問題。這並不影響任何事情,但我想知道爲什麼會發生。奇怪的隨機值作爲默認間隔處理程序參數

如果我在Firefox上運行的螢火下面的代碼:

setInterval(function(param) 
    { 
     console.log("param is %o",param) 
    },500); 

PARAM似乎被分配一個模糊的隨機值:

param is -2 
    param is -1 
    param is -2 
    param is 1 
    param is -1 
    param is 6 
    param is -1 
    param is 0 
    param is -2 
    param is 2 
    param is 0 
    param is 2 
    param is 0 
    param is 0 
    param is 0 
[..] 
    param is 0 
    param is 0 
    param is 0 
    param is 0 
    param is 0 
    param is 0 
    param is 0 
    param is 911 
    param is 0 
    param is 0 
    param is 0 
    param is -1 

我不明白,我不傳遞任何參數setInterval傳遞給函數,但爲什麼JavaScript選擇傳遞這個隨機數?

我本來期望未定義或類似的東西...

乾杯

附:沒有在其他瀏覽器上測試過

+0

順便說一句,你可以更簡單地測試這個像這樣:'setInterval(console.log,500)'。 – SLaks

回答

3

它似乎取決於Firefox的CPU使用率。

我想這是從回調應該被調用的延遲。

編輯I was right。這是調用回調後的毫秒數。

+0

幹得好。說得通。 似乎總是被作爲附加parameter.So如果是通過2個參數,該值是第三個.. – Ben

+0

是啊,我是正義的頁面過 –

+0

耶,好找的,絕對。不知道這個。非常酷 –

0

它是由window.setInterval自動設置的間隔ID。如果您存儲結果,您可以稍後清除的時間間隔(阻止它)

var intID = window.setInterval(function(){ alert("I'm annoying!"); }, 10000); 

// this will kill it before it annoys you, :D 
window.clearInterval(intID); 

這也與window.setTimeout情況:

var timeID = window.setTimeout(function(){ alert("I'm annoying!"); }, 10000); 

// this will kill it before it annoys you, :D 
window.clearTimeout(timeID); 
+0

你誤解了他的問題。他不問什麼'setInterval'返回;他在問什麼傳遞給回調。 – SLaks

+0

是的,我的壞,只是意識到這一點。這很奇怪。 –

+0

這是錯誤的答案,但也許有人不知道這兩種,所以whatevs –