특징
- HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어
- 기본 문법은 C, 자바와 유사하고 셀프(Self)에서는 프로토타입 기반 상속을, 스킴(Scheme)에서는 일급함수의 개념을 차용
- 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어
- 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점 해결
인터프리터 : 소스코드를 즉시 실행하고
컴파일러 : 빠르게 동작하는 머신 코드를 생성하고 최적화함
- 이를 통해 컴파일 단계에서 추가적인 시간이 필요함에도 빠르게 코드 실행함
- 명령형, 함수형, 프로토타입 기반, 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어
- 강력한 객체지향 프로그래밍 능력을 가지고 있음 → 자바스크립트는 클래스 기반 객체지향 언어보다 효율적이며 강력한 프로토타입 기반의 객체지향언어
인터프리터 언어 VS 컴파일러 언어
자바스크립트는 일반적으로 인터프리터 언어로 구분.
전통적인 컴파일러 언어와 인터프리터 언어를 비교하면 표와 같음
컴파일러 언어 | 인터프리터 언어 |
코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신 코드로 변환 후 실행 | 코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 중간 코드인 바이트코드로 변환 후 실행 |
실행 파일을 생성 | 실행 파일을 생성하지 않음 |
컴파일 단계와 실행 단계가 분리됨. 명시적인 컴파일 단계를 거치고 명시적으로 실행 파일을 실행함 |
인터프리트 단계와 실행 단계가 분리되어 있지 않음. 인터프리터는 한 줄씩 바이트 코드로 변환하고 즉시 실행함 |
실행에 앞서 컴파일은 단 한번 수행됨 | 코드가 실행될 떄마다 인터프리트 과정이 반복 수행됨 |
컴파일과 실행단계가 분리되어 있으므로 코드 실행 속도가 빠름 | 인터프리트 단계와 실행 단계가 분리되어 있지 않고 반복 수해오디므로 코드 실행 속도가 비교적 느림 |
- 모던 브라우저는 복잡한 과정을 거치며 일부 소스코드를 컴파일하고 실행함
- 자바스크립트는 런타임에 컴파일되며 실행 파일이 생성되지 않고 인터프리터의 도움 없이 실행할 수 없기 때문에 컴파일러 언어라고 할 수 없음
'모던 자바스크립트 Deep Dive' 카테고리의 다른 글
[JS][Deep Dive] strict mode (0) | 2022.08.18 |
---|---|
[JS][Deep Dive] this (0) | 2022.08.18 |
[JS][Deep Dive] 자바스크립트 개발 환경과 실행방법 (0) | 2022.07.09 |
[JS][Deep Dive] 자바스크립트와 ECMAScript (0) | 2022.07.06 |
[JS][Deep Dive] 자바스크립트의 역사, 탄생 (0) | 2022.07.06 |