2010-02-03 5 views
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(); 

답변

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

+0

그런데'Inc' 함수는 여전히 존재한다고 말할 수 있습니다 만,'setInterval'에 전달 될 때 내부적으로 선언 된 * 익명 함수입니다. –