더북(TheBook)

따라서 클로저가 실행될 때 이미 i는 4가 되어 i를 출력하면 4가 출력됩니다. 그리고 numbers는 인덱스가 3까지밖에 없으므로 numbers[4]undefined가 됩니다.

그렇다면 let을 쓸 때는 왜 이러한 문제가 발생하지 않았을까요? let 코드를 다시 봅시다.

const number = [1, 3, 5, 7];
for (let i = 0; i < number.length; i++) { 
  setTimeout(() => {
    console.log(number[i]);
  }, 1000 * (i + 1));
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.