ECMAScript
ECMA스크립트(ECMAScript)는 Ecma 인터내셔널의 ECMA-262 기술 규격에 정의된 표준화된 스크립트 프로그래밍 언어이다. 이 언어는 웹 상에서 널리 쓰이며, 흔히 자바스크립트 또는 J스크립트로도 생각할 수 있지만 두 용어는 특별한 의미 차이가 있다. ECMA스크립트와 자바스크립트, J스크립트의 관계를 이해하기 위해서는 ECMA스크립트의 역사를 알아야 한다.
Versions
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번째 판의 규격에 있던 수많은 애매한 부분을 명확히 한다.1 | |
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 등. |
4th Edition (abandoned)
5th Edition
6th Edition – ECMAScript 2015
7th Edition – ECMAScript 2016
ES2016에서 비동기 프로그래밍을 위한 <coede>await</code> 키워드를 "Future Reserved Words"로 지정했다.2 (즉, 아직 미구현)
8th Edition – ECMAScript 2017
9th Edition – ECMAScript 2018
10th Edition – ECMAScript 2019
11th Edition – ECMAScript 2020
- Nullish Coalescing Operator
- e.g.
a ?? b
- Optional Chaining
- e.g.
foo.a?.b
12th Edition – ECMAScript 2021
- Logical assignment operators (논리 할당 연산자)
- e.g.
obj.prop ??= foo();
- Numeric separators (숫자 구분 기호)
- e.g.
10_000_000_000