동기 처리와 비동기 처리함수를 호출하면 함수 코드가 평가되어 함수 실행 컨텍스트가 생성되며 콜 스택에 푸시되고 함수 코드가 실행된다. 함수 코드의 실행이 종료되면 실행 컨텍스트는 실행 컨텍스트 스택에서 팝되어 제거된다.const foo = () => {};const bar = () => {};foo();bar(); 함수의 실행 순서는 실행 컨텍스트 스택으로 관리한다. JS 엔진은 단 하나의 실행 컨텍스트 스택을 갖는다. 이처럼 JS 엔진은 한 번에 하나의 태스크만 실행할 수 있는 싱글 스레드 방식으로 동작하며 이러한 동작 방식 때문에 이전 작업이 끝나기전에 다음 작업을 할 수 없는 블로킹 현상이 발생한다.// sleep 함수는 일정 시간(delay)이 경과한 이후에 콜백 함수(func)를 호출한다.fun..