더북(TheBook)

15.2 자바스크립트 엔진: 스택과 큐

이번에 살펴볼 자료 구조 적용 사례는 자바스크립트 엔진입니다. 자바스크립트 엔진은 스택과 큐를 절묘하게 활용한 아주 멋진 예입니다.

자바스크립트는 싱글 스레드에서 작동하지만 비동기 언어입니다. 스레드가 하나라면 스택 프레임이 쌓이는 콜 스택도 하나일 테고, 그렇다면 한 번에 한 가지 일만 할 수 있을 텐데 우리는 아무런 의심 없이 setTimeout을 사용합니다. 어떤 일을 하다가 시간이 되면 자동으로 다른 일을 한다는 것입니다. 자바스크립트에서는 어떻게 콜백을 사용할 수 있을까요?

예를 하나 들어 보겠습니다. 크롬 브라우저를 켜고 F12를 눌러 개발자 도구를 켠 후 Console 탭을 클릭합니다. 이제 아래 나오는 두 코드를 한 폴더에 두고 js_engine.html 파일의 절대 경로를 복사해서 크롬 주소 창에 붙여 넣어 실행합니다.

코드 15-2 js_engine.html

<html>
    <head>
        <script src='js_engine.js'></script>
    </head>
    <body>

    </body>
</html>

코드 15-3 js_engine.js

console.log('code starts')

setTimeout(() => {
    console.log('callback executed');
}, 1000);

console.log('code ends');

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.