기술면접 7탄 Javascript

양진영·2022년 4월 18일
0

내가 프로그래머가 되기로 결심하고 배운 언어인 Javascript에 대해서 알아 보도록 하겠다. 오늘 알아볼 Javascript는 문법과는 거리가 조금 있지만 Javascript언어로 코딩을 할것이 아니고 프로그래밍을 할것이라면 반드시 알아야할 기본중에 기본 Javascript 동작원리에 대해서 공부해 보았다. 우선 Javascript는 언뜻 봤을때는 코드의 병렬처리가 가능한 multi-threaded language로 보일수 있다. 하지만 Javascriptsms single-threaded language이다. 딱 봤을때, 별로 좋아보이지 않는다 왜냐하면 일을 병렬처리 하지못하고 한번에 하나만 처리할수있을 것이라고 보이기 때문이다. 하지만 이는 사실이 아니다. 병렬처리를 못한다는게 사실인게 아니라, 병렬 처리를 하지 못함에도 불구하고 Javascript는 병렬처리 하는것 처럼 동작한다. 그럼 이제 어떤 동작 원리를 가졌기에 그렇게 보이는가에 대해 설명해 보도록 하겠다. 우선 Javascript는 기본적으로 동기적으로 실행된다. 동기적으로 실행되어 코드를 한줄 한줄 실행 시킨다. 이때 코드는 call stack에 쌓인다. 잠깐 설명을 돕자면 stack은 선입후출(fisrt in last out)으로 데이터를 처리하는 방식이다. call stack말 그대로 call한 순서대로 아래부터 쌓이고 마지막에 불려진 코드가 가장처음 실행된다. 하지만 이때 비동기적인 코드가 들어온다면 어떻게 될까? 그렇게 되면 비동기적 코드는 call stack에서 나와 callback queue라는 소위 임시 대기실에서 대기하다가 자신의 실행 조건을 마치고 call stack이 다 실행되어 비워졌다면 그때 callback queue에 대기 하고 있던 코드는 event loop를 통해 call stack에 넣어지게 되고 실행된다. 일련의 과정을 통해 Javascript는 병렬적으로 일처리를 하는것 처럼 보여지는 것이다.

가장 기본적이지만 항상 문법에만 급급하던 내가 이제서야 왜 많은 곳에서 범용성을 제외 하고도 multi-threaded language가 아니어도 Javascript를 사용하게 되는지 이해할수 있었고 이 기회를 통해 좀더 근본적으로 Javascript에 대해 알수있었던것 같다.

profile
왜? 라는 질문을 중요시하는 서버 개발자입니다

0개의 댓글