2014-12-27 3 views
-2

누군가이 코드의 작동을 설명 할 수 있습니까?루프 내에서 javascript setTimeout [닫힘]

var display = function(i) { 
    return function(){ 
    console.log(i); 
    }; 
}; 

for(var i=0; i<5; i++) { 
    setTimeout(display(i), i*1000); 
} 

표시 기능은 각 반복에서 호출됩니다. 또는 루프가 실행을 마친 후 시간 초과가 트리거 된 후에 호출됩니까?

+0

이 그것은 호출되는 것입니다. – Kelsadita

답변

0

당신은 루프를 실행해야하지만 디스플레이는 각 setTimeout 간격 값으로 호출됩니다. 그래서 코드 샘플 위의 당 : 그것은 같은 것을 할 것입니다 - 두 번째 2 sec 후 그래서 예에 통과 시간 간격으로 동일한 코드 부분의 많은 사본 및 실행되도록 할 것입니다>

첫 번째 호출 후 1 sec을 때가되면.

4
빠르게 5 번 실행 반복에 대한

제 1, 그것은이 라인을 실행 같을 수는 :

setTimeout(display(0), 0*1000); 
setTimeout(display(1), 1*1000); 
... 
setTimeout(display(4), 4*1000); 

결과는 다음과 같습니다 루프가 실행이 완료된 후

display(0) will launch after 0 seconds. 
display(1) will launch after 1 seconds. 
... 
display(4) will launch after 4 seconds. 
+0

aha moment !!!!! – Ajey