JavaScript를 처음 배우다 보면 다음과 같은 코드를 마주치게 된다.setTimeout(() => console.log("timeout"), 0);Promise.resolve().then(() => console.log("promise"));console.log("sync"); JavaScript는 싱글 스레드이며 기본적으로 동기적으로 실행된다고 배웠기 때문에처음 보면 이런 결과를 예상하게 된다.synctimeoutpromise 하지만 실제 실행 결과는 다음과 같다.syncpromisetimeout여기서 의문이 생긴다.setTimeout의 delay가 0인데 왜 Promise가 먼저 실행될까?이 동작을 이해하려면 JavaScript Event Loop 구조를 알아야 한다.JavaScript는 싱글 ..