JavaScript如何通过引用传递变量?

3

如何将变量通过引用传递给setInterval的回调函数?
我不想为计数器定义全局变量。是否可能?

    var intervalID;

    function Test(){
        var value = 50;               
        intervalID = setInterval(function(){Inc(value);}, 1000);              
    }

    function Inc(value){
        if (value > 100) 
            clearInterval(intervalID);
        value = value + 10;                                       
    }

    Test();
1个回答

4

如果您为它创建闭包,就不必传递该值,它将在内部范围内可用,但在Test函数外部不可用:

function Test() {
    var value = 50;
    var intervalID = setInterval(function() {

        // we can still access 'value' and 'intervalID' here, altho they're not global
        if(value > 100)
            clearInterval(intervalID);

        value += 10;

    }, 1000);
}

Test();

那么这样做,我甚至不需要使用 Inc 函数吗? - luppi
从某种意义上说,你可以说Inc函数仍然存在,但它是一个匿名函数,在传递给setInterval时内部声明。 - David Hedlund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接