JavaScript를 배우거나 사용하는 사람이라면 ES6 표준
, ES5
, ES2020
등의 단어를 들어본 적이 있을 것이다. 하지만 arrow function
, let
, const
, spread operator
등이 ES6에서 추가됐다는 것은 알아도 ES가 무엇인지 찾아보지 않아 그간 모르고 지내왔다. 이번 시간에는 ECMAScript
가 무엇인지 정리해보겠다.
What is ECMAScript?
ECMAScript는 말 그대로 ECMA라는 기관이 만든 Script 언어이며, ECMA-262 표준를 따르고 있다. ECMA-262는 Ecma International[정보와 통신 시스템을 위한 국제적 표준화 기구]에서 정의한 ECMAScript의 언어 규격이다.
JavaScript를 개발한 Netscape가 더 향상된 표준화를 위해 기술 규격을 Ecma에 제출했고, 그에 따라 Ecma가 새롭게 제정한 표준이 바로 ECMA-262다. 따라서 ECMA-262는 국제 언어 규격이며, ECMAScript는 ECMA-262에 의해 표준화된 JavaScript의 또다른 이름이다.
Version of ECMAScript
ES5, ES6, ES2020 등은 ECMAScript가 배포된 버전이다.
브라우저 업데이트를 유심히 살펴본 변태(필자)의 경우 JavaScript의 함수가 지원된다고 적혀있는 글을 본적이 있다. 이 때에 브라우저에서 지원하는 것은 ECMAScript를 말하는 것이며 국제 표준에 맞게 업데이트를 했다는 뜻이다.
JavaScript의 표준, 그 초판은 1997년에 출시되었다. ES1, ES2, ES3, ES5 및 ES6으로 축약되었다.
version | Year | Feature |
ES1 | ECMAScript 1 (1997) | First edition |
ES2 | ECMAScript 2 (1998) | Editorial changes |
ES3 | ECMAScript 3 (1999) | regular expressions try/catch |
ES4 | ECMAScript 4 | Never released |
ES5 | ECMAScript 5 (2009) | "strict mode" JSON support String.trim() Array.isArray() Array iteration methods |
ES6 | ECMAScript 2015 | let and const default parameter values module(export and import) Array.find() Array.findIndex() |
ES7 | ECMAScript 2016 | exponential operator (**) Array.prototype.includes |
ES8 |
ECMAScript 2017 | string padding Object.entries Object.values async functions shared memory |
ES9 | ECMAScript 2018 | rest / spread properties asynchronous iteration Promise.finally() RegExp |
ES10 | ECMAScript 2019 | Object.fromEntries Array.prototype.flat Array.prototype.flatMap optional chatch binding |
ES11 | ECMAScript 2020 | String.prototype.matchAll BigInt globalThis Promise.allSettled null 병합 연산자 옵셔널 체이닝 연산자 for...in enumeration order |
ES12 | ECMAScript 2021 | Logical assignment operators (||=, &&=, ??=) String.replaceAll Numeric separator propmise.any WeakRef |
ES13 | ECMAScript 2022 | .at() RegExp match indices Object.hasOwn(obj, propKey) error.cause Top-level await module Class Fields |
5판까지는 ECMAScript 5(=ES5)라는 명칭을 사용했지만, 6판부터는 빠른 배포주기를 반영하기 위해 숫자 대신 연도를 붙여 ECMAScript 2015(=ES6) 같은 명칭을 사용한다. ECMAScript 2022은 많이들 ES5, ES6과 다르게 ES2022라고 부르는데, 특별한 이유는 없다. ES13라고 표기해도 되는데 배포 연도를 강조하기 위해 ES2022라고 부르는 것이다.