我知道这可能是一个简单的答案,但我在使用setInterval
功能时遇到了问题。以下是我到目前为止的情况:
function countUp(n) {
console.log(n++);
}
setInterval( function() { countUp(10); }, 1000);
如果我将变量移到函数外部并递增该值,它将起作用。但是,我希望能够在调用函数countUp
时将数字设置为任何值。上面的代码只是记录10
。
修改
有没有办法将参数传递给this函数并使其与setInterval一起使用而不必声明全局变量?
答案 0 :(得分:3)
您需要在函数的封闭范围内递增变量:
var n = 10;
function countUp() {
console.log(n++);
}
setInterval(countUp, 1000);
更新:这是一个不涉及全局变量的策略:
function countUp(start) {
return function() {
console.log(start++)
}
}
setInterval(countUp(10), 1000);
正如我所指出的,计数器只需要在封闭范围内,而不是全局范围。所以将它传递给一个可以在闭包中引用它的函数在这里工作正常。