2010-02-03 5 views
3

Comment passer des variables en référence à la fonction de rappel de setInterval?
Je ne veux pas définir une variable globale juste pour le compteur. C'est possible?Javascript passe variable par référence

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

Répondre

4

Si vous créez une fermeture pour elle, vous ne devez passer la valeur du tout, ça va juste être disponible dans le cadre interne, mais pas en dehors de la fonction 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

Donc, avec cela, je n'ai même pas besoin de la fonction Inc? – luppi

+0

d'une certaine manière, vous pouvez dire que la fonction 'Inc' est toujours là, mais c'est une fonction * anonyme déclarée en interne quand elle est passée à' setInterval' –

Questions connexes