Ecmascript 표준은 어떤 기관에서 제정하는가

We’ve updated our privacy policy so that we are compliant with changing global privacy regulations and to provide you with insight into the limited ways in which we use your data.

You can read the details below. By accepting, you agree to the updated privacy policy.

Thank you!

View updated privacy policy

We've encountered a problem, please try again.

자바스크립트를 사용하는 사람이라면 ES6 표준, ES5, ES2020등의 단어를 들어본 적이 있을 것이다.

나는 처음으로 들은 udemy 강의에서 arrow function, let, spread operator 등이 ES6에서 추가됐다는 것을 배우면서 처음 들었다. ES가 무슨 단어의 약자인지도 모르면서 그냥 외웠다.

자바스크립트를 접한지 벌써 2년이 다 돼가는데, 어차피 babel이 polyfill 생성해주니까 + 불편한 점 없어서 용캐 덮어두고 있던 것 같다.

이 글은 나 같은 게으름뱅이들을 위한 글이다. ECMAScript가 무엇이며, ES5/ES6/ES2020 등의 버전은 무엇이며, 이것이 우리에게 어떤 영향을 주고 있는지에 대해서 자세히 정리해보겠다.

ECMAScript란?

ECMAScript는 말 그대로 Ecma라는 기관이 만든 script 언어이며, ECMA-262 표준를 따르고 있다.

Ecma internatinal은 정보통신기술(ICT), 전자제품(CE)를 위한 국제 표준 기구이다. ECMAScript의 언어 규격인 ECMA-262외에도 C#, C++, Dart, JSON 등 여러 시스템을 위한 표준을 책임지고 있다.

자바스크립트를 개발한 Netscape가 더 향상된 표준화를 위해 기술 규격을 Ecma에 제출했고, 그에 따라 Ecma가 새롭게 제정한 표준이 바로 ECMA-262다.

ECMA-262는 규격이며, ECMAScript는 ECMA-262에 의해 표준화된 자바스크립트의 새로운 이름이다.

따라서 ECMAScript가 표준 또는 언어규격이라는 말은 옳지 않다.

ECMAScript(=javascript)는 엄연히 프로그래밍 언어이며, ES6 표준을 따른다 라는 말은 ECMAScript 2015가 사용중인 ECMA 규격을 따른다, ECMAScript 2015과 동일한 문법을 사용한다 와 동의어라고 볼 수 있겠다.

ECMAScript의 버전?

ES5, ES6, ES2020등은 ECMAScript가 배포된 버전이다.

2015년 이후 매년 새로운 버전이 배포되고 있으며, 이전 명세의 문제 해결 및 간결한 문법 추가를 목표로 한다.

5판까지는 ECMAScript 5(=ES5)라는 명칭을 사용했지만, 6판부터는 빠른 배포주기를 반영하기 위해 숫자 대신 연도를 붙여 ECMAScript 2015(=ES6) 같은 명칭을 사용한다.

ECMAScript 2020은 많이들 ES5, ES6과 다르게 ES2020라고 부르는데, 특별한 이유는 없다. ES11라고 표기해도 되는데 배포 연도를 강조하기 위해 ES2020라고 부르는 것이다.

필자는 ES9 이후부터는 ES0이라고 부를 수 없으니까 연도를 통째로 붙이는줄 알고 있었다 😅

ES6?!

자바스크립트를 처음 공부하면 다른 언어를 공부할 때보다 비교적 버전에 대한 이야기를 많이 듣게 된다.

자바스크립트를 공부해본 사람이라면 이것은 ES6부터 추가된 기능인데~ 라는 말이 정말 익숙할 것이다. 자바스크립트를 다루는 기본서들은 반드시 제목 또는 표지에 큼지막하게 다루는 ECMA 규격을 명시하며, 그 중 대다수는 ES6이다.

벌써 ES11이 배포됐는데, 왜 다들 ES6에 집착하는 것일까? 이유는 ES6에서 추가된 문법들이 기존의 문제들을 매우 깔끔하게 해결했으며, 가독성 및 유지 보수성을 보강하는 문법도 대거 추가됐기 때문이다.

ES6 표준 문법은 IE에서 지원되지 않지만, 트랜스파일러(Babel)를 이용해서 하위 문법을 따르는 코드로 쉽게 변경할 수 있기 때문에 호환성 문제도 없다.

ES6에서 추가된 기능으론 Promise, Class, Arrow function 등이 있다. 각 기능에 대한 자세한 설명은 아래 링크를 참고하자.

  • 참고 : TOAST UI - ES5 TO ES6

3줄 요약

  1. ECMAScript(=자바스크립트)는 언어이며, ECMA-262 규격을 따른다.
  2. 매년 새로운 버전이 배포되고 있으며, 현재 최신판은 ES2020이다.
  3. ES6에서 중요한 기능들이 많이 추가됐으니 꼼꼼히 알아두자.

Refs

  • wikipedia.org - Ecma internatinal
  • wikipedia.org - ECMAScript
  • medium - A World of Javascript Transpilers

ECMA스크립트(ECMAScript, 또는 ES[1])란, Ecma International이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어를 말한다. 자바스크립트를 표준화하기 위해 만들어졌다. 액션스크립트와 J스크립트 등 다른 구현체도 포함하고 있다.[2] ECMA스크립트는 웹의 클라이언트 사이드 스크립트로 많이 사용되며 Node.js를 사용한 서버 응용 프로그램 및 서비스에도 점차 많이 쓰이고 있다.

역사[편집]

1996년 3월, 넷스케이프에서 넷스케이프 네비게이터 2.0을 출시하면서 자바스크립트를 지원하기 시작했다. 웹 페이지 동작을 향상시키는 언어로서 자바스크립트의 성공은, 마이크로소프트가 이와 "적당히" 호환되는 J스크립트를 개발하는 계기가 되었다. J스크립트는 1996년 8월, 인터넷 익스플로러 3.0에 포함되어 출시되었다.

넷스케이프는 표준화를 위해 자바스크립트 기술 규격을 Ecma 인터내셔널에 제출하였고, 이 규격에 대한 작업은 ECMA-262의 이름으로 1996년 11월부터 시작됐다. ECMA-262의 초판은 ECMA 일반 회의에서 1997년 6월 채택됐다.

ECMA스크립트는 ECMA-262에 의해 표준화된 언어의 이름이다. 자바스크립트와 J스크립트는 모두 ECMA스크립트와의 호환을 목표로 하면서, ECMA 규격에 포함되지 않는 확장 기능을 제공한다.

판본[편집]

ECMA-262는 10개의 판이 출판되었다. 10판 표준에 대한 작업은 2019년 6월에 마무리됐다.

출판일 이름 이전 판과의 차이점
1 1997년 6월 초판
2 1998년 6월 ISO/IEC 16262 국제 표준과 완전히 동일한 규격을 적용하기 위한 변경.
3 1999년 12월 강력한 정규 표현식, 향상된 문자열 처리, 새로운 제어문 , try/catch 예외 처리, 엄격한 오류 정의, 수치형 출력의 포매팅 등.
4 버려짐 4번째 판은 언어에 얽힌 정치적 차이로 인해 버려졌다. 이 판을 작업 가운데 일부는 5번째 판을 이루는 기본이 되고 다른 일부는 ECMA스크립트의 기본을 이루고 있다.
5 2009년 12월 더 철저한 오류 검사를 제공하고 오류 경향이 있는 구조를 피하는 하부집합인 "strict mode"를 추가한다. 3번째 판의 규격에 있던 수많은 애매한 부분을 명확히 한다.[3]
5.1 2011년 6월 ECMA스크립트 표준의 제 5.1판은 ISO/IEC 16262:2011 국제 표준 제3판과 함께 한다.
6 2015년 6월 ECMAScript 2015 (ES2015) 6판에는 클래스와 모듈 같은 복잡한 응용 프로그램을 작성하기 위한 새로운 문법이 추가되었다. 하지만 이러한 문법의 의미는 5판의 strict mode와 같은 방법으로 정의된다. 이 판은 "ECMAScript Harmony" 혹은 "ES6 Harmony" 등으로 불리기도 한다.
7 2016년 6월 ECMAScript 2016 (ES2016) 제곱연산자 추가, Array.prototype.includes
8 2017년 6월 ECMAScript 2017 (ES2017) 함수 표현식의 인자에서 trailing commas 허용, Object values/entries 메소드, async/await 등.
9 2018년 6월 ECMAScript 2018 (ES2018) Promise.finally, Async iteration, object rest/spread property 등.
10 2019년 6월 ECMAScript 2019 (ES2019) Object.fromEntries, flat, flatMap, Symbol.description, optional catch 등.

2004년 6월에 Ecma 인터내셔널은 E4X(XML을 위한 ECMA스크립트)로 알려진 ECMA스크립트의 확장을 정의하는 ECMA-357을 출판했으나 2015년에 표준에서 제외됐다.[4][5]

같이 보기[편집]

  • 자바스크립트
  • J스크립트

각주[편집]

  1. Stefanov, Stoyan (2010). 《JavaScript Patterns》. O'Reilly Media, Inc. 5쪽. ISBN 9781449396947. 2016년 1월 12일에 확인함. The core JavaScript programming language [...] is based on the ECMAScript standard, or ES for short.
  2. “A Short History of JavaScript”. W3C.
  3. Changes to JavaScript, Part 1: EcmaScript 5
  4. “2015-03-24 Meeting Notes”. ESDiscuss.
  5. “Ecma withdrawn Standards”. Ecma International.

외부 링크[편집]

  • ECMA스크립트 - 공식 웹사이트
ISO 표준
  • ISO 16262
ECMA 표준
  • 표준 ECMA-262 ECMA스크립트 언어 규격
    • 표준 ECMA-262 ECMA스크립트 언어 규격 3판 (1999년 12월)
    • 표준 ECMA-262 ECMA스크립트 언어 규격 3판 최종 (2000년 3월 24일)
    • 표준 ECMA-262 ECMA스크립트 언어 규격 5판 (2009년 12월)
    • 표준 ECMA-262 ECMA스크립트 언어 규격 5.1판 (2011년 6월)
    • 표준 ECMA-262 ECMA스크립트 언어 규격 6판 (2015년 6월)
    • 표준 ECMA-262 ECMA스크립트 언어 규격 9판 (2018년 6월)
    • 표준 ECMA-262 ECMA스크립트 언어 규격 10판 (2019년 6월)
  • 표준 ECMA-290 ECMA스크립트 컴포넌트 규격 (1999년 6월)
  • 표준 ECMA-327 ECMA스크립트 3판 축약판 (2001년 6월)
  • 표준 ECMA-357 XML을 위한 ECMA스크립트(E4X) 규격 (2004년 6월)