본 자료는 박규하 코치님과 Elice 플랫폼의 자료를 사용하여 정리하였습니다.
JavaScript의 동작원리
구문분석(Parsing)
- 문법에 오류가 있는지 확인하고 코드를 실행가능한 형태로 변환
컨텍스트 생성(Context Creation)
- 코드를 실행하기 위해 실행 컨텍스트를 생성
- 실행 컨텍스트는 코드 실행에 필요한 정보를 담고있는 객체
- 변수, 함수, 매개변수, 스코프체인, this 등
변수 및 함수 선언(Variable and Function Declaration)
- 실행 컨텍스트 생성 시 변수 및 함수를 메모리에 할당
- 변수를 위한 메모리공간을 확보, 함수를 위한 함수 객체를 생성
- 변수와 함수는 실행 컨텍스트의 프로퍼티로 저장
실행(Execution)
- 생성된 실행 컨텍스트를 스택에 쌓은 후, 코드를 실행
- 함수 호출이 발생하면 새로운 실행 컨텍스트가 스택에 쌓이고 함수 실행이 완료되면 실행 컨텍스트는 스택에서 제거
가비지 컬렉션(Garbage Collection)
- 더이상 사용되지 않는 메모리를 자동으로 해제하여 메모리누수 방지
- 주기적으로 실행된다.
Node.js
- Google Chrome의 JavaScript 엔진인 V8을 사용하여 서버 측 JavaScript를 실행할 수 있게 해주는 도구
- 이벤트 기반, 비동기식 I/O 모델을 사용하여 높은 성능을 제공
- JavaScript 런타임 환경을 제공
- JavaScript로 작성된 어플리케이션을 실행
- HTTP, HTTPS, TCP, UDP와 같은 프로토콜을 지원
- 빠른 실행속도와 메모리 관리기능 제공(JIT컴파일러, 가비지컬렉션)