저 경우 5로만 나오는게 당연하고

해결법은 익명함수로 감싸서 파라미터로 i 받으면 되는건데

또 다른 해결법으로 var이 아니라 let을 쓰는 것이 있다

근데 let으로 스코프가 변했다고 하더라도

setTimeout안의 저 익명함수가 실행되는 시점에서는 i가 5가 되는게 맞잖아?

근데 실제로는 정상적으로 출력된다

이 문제에 대해서 자스 문법적으로 깔끔하게 설명해줄 고수 있냐