2010-02-03 58 views
3

如何通过引用setInterval的回调函数来传递变量?
我不想为计数器定义一个全局变量。可能吗?JavaScript引用变量

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(); 

回答

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(); 
+0

因此,我甚至不需要Inc功能? – luppi 2010-02-03 13:54:27

+0

在某种程度上,你可以说'Inc'函数仍然存在,但是它是一个* anonymous函数*当它被传递给'setInterval'时在内部声明 – 2010-02-03 13:55:44