for (var i = 0; i < 5; i++) {
setTimeout(function() { console.log(i); }, i*1000 );
}
해당 반복문에서
반복문이 이미 돌아버려서 i변수는 , 5가 되어 버린다고 하셔서
이 부분은 이해 하였습니다.
이어서 설명해주시길 해당 코드를 제대로 실행하려면
var 를 let으로 변경해야 한다고 하였습니다.
물론 let으로 변경하면 코드가 잘 작동하지만, 원리가 이상합니다
let 타입으로 변수를 선언한다고해도
setTimeout 때문에, 콜백 함수는 나중에 실행되니
for문이 반복을 이미 마친 상태라서
let i 변수도 5가 되어있어야 하는거 아닌가요?
왜 let변수는 시간이 흘러도 값증가 하지않고
제대로 된 값을 주는건지 이해를 못하고 있습니다.
이해할수있도록 도와주신다면 감사하겠습니다.