1. ECMAScript (ECMA스크립트)
ECMAScript는 Ecma International에 의해 ECMA-262라는 기술 규격에 의해 정의 된 범용 스크립트 언어이다.
'ECMAScript specification' 라고 불리기도 하며 스크립트 언어가 준수해야 하는 규칙, 세부 사항 및 지침을 제공한다.
이해를 돕기위해 예를 들자면 한국어는 국어를 표준어라고 부르며, 이런 표준어는 국립국어원에서 관리되고 있고, 국립국어원에서 제정한 규칙(발음, 맞춤법 등)에 의해 일정한 원리를 따르고 있다.
ECAMScript에 적용시켜 예를 들어보자면 하기와 같다.
Ecma International은 국립국어원
ECMA-262는 표준어
ECMAScript는 국립국어원에서 제정한 규칙(발음, 맞춤법 등)
Javascript에 대한 검색을 하다가 ES6, ES6+라는 문구를 볼 수 있는데, 이는 ES6는 ECMAScript 6라는 의미로 ECMA - 262 표준의 제 6판이라는 말이며, ES6+는 ES6이후를 의미한다.
2. JavaScript (자바스크립트)
JavaScript는 ECMAScript의 사양을 준수하는 범용 스크립팅 언어이다.
쉽게 말해 ECMAScript는 스크립팅 언어를 어떻게 만들어야할지에 대한 설명서라고 생각하면 되고, JavaScript는 ECMAScript를 사양을 바탕으로 만들어진 언어이다.
예를 들면 ECMAScript는 표준어, JavaScript는 방언이라고 생각하면 이해가 쉽다.
3. Javascript Engine(자바스크립트 엔진)
JavasScript Engine은 JavaScript 코드를 이해하고 실행하는 인터프리터이다.
인터프리터는 소스를 한 번에 기계어로 변환시키는 컴파일러와는 달리 코드를 한 구문씩 기계어로 변환하면서 프로그램을 실행시키는 방식이다. 그래서 JavaScript Engine는 JavaScript Interpreter(자바스크립트 인터프리터)라고 불리기도 한다.
JavaScript Engine은 우리가 쉽게 접하는 웹브라우저에서 찾아볼 수 있다. 예를 들면 Google Chrome의 V8, Mozilla Firefox의 SpiderMonkey, Microsoft Edge의 Chakra가 대표적이며, 이 엔진들은 각자의 지원되는 ECMAScript와 수행 능력이 다르다. 새로운 ECMAScript 버전이 발표되면 이에 맞춰 각 JavaScript Engine도 사양에 준수하도록 점진적으로 업데이트한다 이 때 각 브라우저마다 호환성 문제(Cross Browser Issues)가 발생할 수 있는데, 이러한 문제는 바벨(babel)이라는 오픈소스 자바스크립트 트랜스 파일러를 문제를 해결할 수 있다.
바벨(babel)은 ES6 기준으로 작성된 코드를 이전 버전인 ES5코드로 변경해주어 호환성 문제를 해결할 수 있게 해준다.
'JavaScript' 카테고리의 다른 글
[Javascript] ==와===의 차이 (0) | 2023.01.08 |
---|---|
[JavaScript] ES5와 ES6 비교 (2) | 2023.01.04 |
[Javascript] var, let, const의 차이점 (비교) (0) | 2022.12.28 |
[Javascript] TDZ(Temporal Dead Zone)란? (0) | 2022.12.26 |
[Javascript] 변수 선언, 초기화, 할당, 호이스팅, 스코프 개념 및 설명 (1) | 2022.12.24 |