본문 바로가기

📂 위클리 페이퍼

[6주차] setTimeout() 실행 과정

📌 예시의 코드를 실행할 때, 콘솔에 출력될 값과 그 이유를 설명해 주세요.

// 1번
let num = 1;

// 2번
setTimeout(() => {
  num = 2;
}, 0);

// 3번
num = 3;

// 4번
console.log(num);
  1. 1번 코드에 의해 num에 1이 할당된다.
  2. setTimeout()Web API가 처리하도록 실행 흐름을 넘긴다.
    • setTimeout(callback, 0)이 실행되면 callback함수를 callback queue 로 넘긴다.
  3. 3번 코드에 의해 num에 3이 할당된다.
  4. 4번 코드에 의해 현재 num에 할당된 3이 출력된다.
  5. 이후 call stack이 비어있으면, Event Loop가 그것을 확인하고 callback queue에 저장해둔 callback함수를 실행시켜 num에 2가 할당된다.
  • call stack에는 작성한 코드의 역순으로 호출한 함수가 저장된다.
    • 처음 call stack에 가장 먼저 console.log(num)이 들어가기 때문에 console.log()가 실행되어야 call stack이 비게 되는 것이다.