Page 16 -
P. 16

이벤트 기반 모델에서는 이벤트 루프(event loop)라는 개념이 등장합니다. 여러 이벤트가 동시에
               발생했을 때 어떤 순서로 콜백 함수를 호출할지를 이벤트 루프가 판단합니다. 이 책을 읽는 여러
               분은 자바스크립트의 기본을 알고 있으므로 이벤트 루프 역시 이미 익숙하겠지만, 노드와 자바스

               크립트에서 이벤트 루프는 정말 중요한 개념이니 간략히 설명하겠습니다.
               노드는 자바스크립트 코드의 맨 위부터 한 줄씩 실행합니다. 함수 호출 부분을 발견했다면 호출한
               함수를 호출 스택(call stack)에 넣습니다. 다음 코드가 콘솔(브라우저 콘솔을 사용하면 됩니다. 크

               롬의 경우 F12 를 눌렀을 때 나오는 개발자 도구의 Console 탭입니다)에 어떤 로그를 남길지 예측
               해보세요. 만약 예측하기 어렵다면 자바스크립트를 복습해야 합니다.

                 function first() {
                   second();
                   console.log('첫 번째');
                 }
                 function second() {
                   third();
                   console.log('두 번째');
                 }
                 function third() {
                   console.log('세 번째');
                 }
                 first();


               first 함수가 제일 먼저 호출되고, 그 안의 second 함수가 호출된 뒤, 마지막으로 third 함수가 호
               출됩니다. 실행은 호출된 순서와 반대로 실행이 완료됩니다. 따라서 콘솔에는 세 번째, 두 번째,
               첫 번째 순서로 찍히게 됩니다. 이를 쉽게 파악하는 방법은 호출 스택을 그려보는 것입니다.


                  그림 1-5 호출 스택

                               third()
                               second()
               이 순서로                           이 순서로
               쌓이고                             실행됨
                               first()
                               anonymous




               그림 1-5에서 anonymous 함수는 처음 실행 시의 전역 컨텍스트(global context)를 의미합니다. 컨
               텍스트는 함수가 호출되었을 때 생성되는 환경을 의미합니다. 자바스크립트 코드는 실행 시 기
               본적으로 전역 컨텍스트 안에서 돌아간다고 생각하는 게 좋습니다. 함수는 실행되는 동안 호

         28





     node_06.indd   28                                                                      2020-07-14   오전 11:01:52
   11   12   13   14   15   16   17   18   19   20   21