2013-06-05 2 views
0

저는이 상자에서 (실제로이 운동에서 ->http://jqexercise.droppages.com/#page_0022_) 1 초마다 수를 세는 스크립트를 가지고 있습니다. 내가 // this line 표시 줄에 countUp()countUp을 변경할 때 countUp()과 countUp의 차이

var target = $("#target input"); 
var countUp = function(){ 
    target.val(parseInt(target.val())+1); 
     setTimeout(countUp,1000);   // this line 
}; 

countUp(); 

내 질문

, 그것은 즉시 그 사이의 차이점은 무엇입니까 15616.까지 계산합니까?

답변

3

countUp 참조 대상으로서의 기능에 정지 선도, 비 기능 1 초 후에 중단되어 수신 setTimeout에서 예외를 판단 제외

는 무한 루프에있을 것이다. JavaScript에서는 모든 것이 함수를 포함하는 객체이며 전달 될 수 있습니다. countUp()countUp 함수를 호출하고 그 값을 반환합니다.

2

함수에 ()을 추가하면 즉시 호출되지만 함수 이름을 사용하면 실제로 매개 변수로 전달됩니다.

1

countUp()은 함수를 재귀 적으로 호출합니다. 함수를 호출 할 때마다 (즉시) 호출되고 반환 값 (undefined)이 setTimeout에 전달됩니다. I는 15616.

+0

@Ian setTimeout에 정수를 전달할 때 "쓸모없는 setTimeout 호출 (인수 주위에 따옴표가 없습니까?)"이 표시되는 것을 상기합니다. –

+0

당신이 맞습니다. 내가 뭘 생각하고 있었는지 모르겠다. 그래서 그냥 무시한다. :) – Ian

1

요약하면, setTimeout (countUp, 1000); n 초마다 밀리 초 단위로 카운트 기능을 실행할 시간을 설정합니다. 이 경우 1 초가됩니다. countup은 여기서 매개 변수로 setTimeout 함수로 전달됩니다.