2010-02-03 57 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