핵심 답변
JavaScript는 단일 스레드 언어이지만, 이벤트 루프를 통해 비동기 작업을 처리합니다.
실행 순서:
1.Call Stack에서 코드 실행
2.비동기 작업(setTimeout 등)은 Web APIs에서 처리
3.완료된 콜백은 Callback Queue(Task Queue)로 이동
4.Promise
.then()은 Microtask Queue로 이동5.Event Loop가 Call Stack이 비면 Queue에서 콜백을 꺼냄
Microtask Queue는 Callback Queue보다 우선순위가 높습니다.
예시 코드
javascript
console.log('1');
setTimeout(() => console.log('2'), 0); // Callback Queue
Promise.resolve().then(() => console.log('3')); // Microtask Queue
console.log('4');
// 출력 순서: 1 -> 4 -> 3 -> 2핵심 용어
📌 Call Stack현재 실행 중인 함수들이 쌓이는 스택 구조. LIFO(후입선출) 방식으로 동작합니다.
📌 Microtask QueuePromise, MutationObserver 콜백이 담김. Callback Queue보다 먼저 비움집니다.
📌 Callback Queue(Task Queue)setTimeout, setInterval, 이벤트 핸들러 콜백이 담김. Microtask가 모두 실행된 후 실행됩니다.