모래블로그

[JavaScript] ECMAScript와 JavaScript 본문

Language/JavaScript

[JavaScript] ECMAScript와 JavaScript

별모래 2024. 2. 19. 17:44
728x90

ECMA International

정보와 통신 시스템을 위한 국제적 표준화 기구이다.  - 위키백과 -


ECMA-262 

ECMA-262는 Ecma International에 의해 제정된 하나의 기술 규격의 이름으로, 범용 목적의 스크립트 언어에 대한 명세를 담고 있다.

 

스크립트 언어에 대한 표준을 정의한 규칙이라고 생각할 수 있다.


ECMAScript

ECMAScript Ecma International에 의해 ECMA-262 라는 기술 규격에 의해 정의 된 범용 스크립트 언어이다.

ECMAScript specification 이라고도 불리며, 스크립트 언어가 준수해야 하는 규칙, 세부 사항 및 지침을 제공한다. 

 

비유해보자면,

Ecma Internation은 국립국어원,

ECMA-262 는 표준어

ECMAScript는 국립국어원에서 제정한 규칙(발음, 맞춤법 등) 이라고 생각할 수 있다.

 

종종 보이는 ES6은 ECMAScript 6 이라는 의미로, ECMA-262 표준의 제 6판이라는 말이며, 

ES6+는 ES6 이후를 의미한다.


JavaScript

자바스크립트는 ECMAScript 사양을 준수하는 범용 스크리팅 언어이다.

ECMASciprt 문서를 읽게 된다면, 어떻게 스크립트 언어를 만들 수 있는지 알 수 있다.

반면 JavaScript 문서를 읽게 된다면, 어떻게 스크립트 언어를 쓸 수 있는지 알 수 있다.


JavaScript Engine

자바스크립트 엔진은 자바스크립트 코드를 이해하고 실행하는 프로그램 또는 인터프리터 이다.

인터프리터는 소스를 한 번에 기계어로 변환시키는 컴파일러와는 다르게 코드를 한 구문씩 기계어로 변환하면서 프로그램을 실행시키는 방식이다. 그래서 JavaScript Interpreter(자바스크립트 인터프리터) 라고도 불린다.

 

자바스크립트 엔진에는 여러 종류가 있다.

예를 들면, Google Chrome의 V8, Mozilla Firefox의 SpiderMonkey, Microsoft Edge의 Chakra 등이 있으며, 

이 엔진들은 각자 지원되는 ECMAScript 와 수행 능력(Performance)이 다르다. 

 

새로운 ECMAScript 버전이 발표되면 이에 맞춰 각 JavaScript Engine도 사양에 준수하도록 점진적으로 업데이트를 하는데,

이 때 각 브라우저마다 호환성(Cross Browser) 문제가 발생할 수 있다. 

특히 Microsoft의 낡은 브라우저인 Internet Explorer가 ES6 사양을 준수하지 않는다.

 

Babel

이를 해결하기 위해 바벨이 등장했다.

바벨(babel) 이라는 오픈소스 자바스크립트 트랜스 파일러로 이러한 문제를 해결할 수 있다.

 

바벨은 ES6 사양으로 작성된 코드를 함수적으로 동일한 ES5 코드로 바꿔준다. 

대부분의 주요 브라우저는 ES5까지는 지원하기 때문에 개발자들은 브라우저 간 호환성 걱정을 덜 수 있다.

 

 


참조

https://tmdrnr96.tistory.com/24

https://wormwlrm.github.io/2018/10/03/What-is-the-difference-between-javascript-and-ecmascript.html

https://ko.wikipedia.org/wiki/Ecma_%EC%9D%B8%ED%84%B0%EB%82%B4%EC%85%94%EB%84%90

728x90

'Language > JavaScript' 카테고리의 다른 글

[JavaScript] 클로저(Closure)  (0) 2024.03.14
[JavaScript] 프로토타입  (1) 2024.03.12
[JavaScript] Generator(제너레이터)  (0) 2024.02.16
[JavaScript] 동기, 비동기  (0) 2024.02.15
[JavaScript] 구조 분해 할당  (0) 2024.02.14