2012-12-03 51 views
0

我知道這可能是一個簡單的答案,但我在使用我的功能時遇到問題setInterval。這是我到目前爲止:setInterval無法按預期方式與計數功能一起工作

function countUp(n) { 
    console.log(n++); 
} 

setInterval(function() { countUp(10); }, 1000); 

如果我將我的變量移動函數的外部並增加該值,它將工作。但是,我希望能夠將該號碼設置爲任何內容,當我呼叫功能countUp。上面的代碼只是記錄10

編輯:

有什麼辦法將參數傳遞給這個函數,並使其與setInterval的工作,而無需聲明一個全局變量?

回答

3

您需要在功能的封閉範圍,增加一個變量:

var n = 10; 

function countUp() { 
    console.log(n++); 
} 

setInterval(countUp, 1000); 

更新:這裏不涉及全局變量的策略:

function countUp(start) { 
    return function() { 
     console.log(start++) 
    } 
} 
setInterval(countUp(10), 1000); 

正如我注意到,櫃檯只需要在封閉範圍內,而不是全球範圍內。因此將它傳遞給一個可以在閉包中引用它的函數在這裏可以正常工作。

+0

對,我明白了。我實際上在原始問題中概述了它。反正有沒有聲明一個全局變量來作爲參數傳遞它? – Sethen

+0

更新是否適合您? – nrabinowitz

+0

這是行不通的。正是我在找什麼。爲什麼我們必須返回另一個函數? – Sethen

相關問題