만약 이런 코드가 있다면 ? console 창에는 어떻게 찍힐까요?
console.log("부먹? 찍먹?");
setTimeout(() => { console.log("부먹") }, 1000);
console.log("찍먹");
이게 가능한 이유를 알려면 브라우저의 동작 원리에 대해 알아야 합니다.
브라우저는 Call Stack, Heap, Task Queue 등으로 이루어져 있습니다.
Call STACK
console.log("부먹? 찍먹?");
setTimeout(() => {console.log("부먹")}, 1000);
console.log("찍먹");
위 코드가 실행 된다면 다음과 같이 작동합니다.
Call Stack
console.log("부먹? 찍먹?");
// 비동기 코드는 Task Queue로 보냄
// 부먹? 찍먹?
console.log("찍먹");
// 찍먹
Task Queue
// 비동기 코드
// Ajax 요청, 이벤트 리스너, setTimeout 등
// stack이 비었는 지 확인 후 올려보냄
console.log("부먹")