// 1번
let num = 1;
// 2번
setTimeout(() => {
num = 2;
}, 0);
// 3번
num = 3;
// 4번
console.log(num);
위 코드의 실행 결과는
3이 출력되게 된다.
1번 코드에서 num의 선언과 값을 1로 초기화 하였으며
순서대로 2,3,4 코드가 실행이 되는데
2번 코드에서 setTimeout의 실행이 0초 뒤에 실행이 되지만
비동기 실행이기에 콜백함수가 실행 되기 이전에 함수 외부에 코드가 우선적으로 실행된다.
이후 3번 코드에서 num에 3을 대입하게 되고
4번 코드가 실행되서 3이 출력되며
마지막으로 다시 2번 코드의 콜백함수가 실행되어 num에 2가 대입되게 된다.