더북(TheBook)

앞에서 작성한 반복문에서 letvar로 바꾸면 어떻게 될까요?

const number = [1, 3, 5, 7];
for (var i = 0; i < number.length; i++) { 
  setTimeout(() => {
    console.log(number[i]);
  }, 1000 * (i + 1));
}

단순히 var로 바꿨을 뿐인데 결과가 완전히 달라집니다. 콘솔에 undefined만 네 번 출력됩니다. varlet은 무엇이 다르길래 이런 현상이 일어날까요?

이번에는 number[i] 대신 i를 콘솔에 출력해 봅시다.

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