setInterval与计数功能无法正常工作

时间:2012-12-03 00:10:43

标签: javascript

我知道这可能是一个简单的答案,但我在使用setInterval功能时遇到了问题。以下是我到目前为止的情况:

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

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

如果我将变量移到函数外部并递增该值,它将起作用。但是,我希望能够在调用函数countUp时将数字设置为任何值。上面的代码只是记录10

修改

有没有办法将参数传递给this函数并使其与setInterval一起使用而不必声明全局变量?

1 个答案:

答案 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);

正如我所指出的,计数器只需要在封闭范围内,而不是全局范围。所以将它传递给一个可以在闭包中引用它的函数在这里工作正常。