티스토리 뷰
개요
ECMAScript에 관해 지금까지 어떤 변경사항이 있었는지 정리하게 되었다.
내용
ECMAScript란?
JavaScript의 하위 집단.
ActionScript, JavaScript, JScript 와 같은 언어는 모두 ECMAScript를 핵심으로 사용한다.
ECMAScript의 역사
현재의 Oracle로 불리는 Sun은 "JavaScript"라는 상표를 가지고 있었기에 언어를 표준화 할 때 다른 이름을 사용해야 했다.
Ecma International에서 호스팅 되면서 "ECMAScript"로 이름이 정해지게 되었고, 실제로 ECMAScript와 JavaScript 용어는 서로 바꿔서 사용할 수 있으며, ECMAScript는 언어 버전을 나타내는데 자주 사용되고 있다.
또한 ES.Next라는 용어는 ECMAScript의 다음 버전을 뜻하는 용어로 쓰인다.
1997년 6월
Ecma International (표준 기구)은 ECMAScript 언어의 공식 사양인 ECMA-262표준을 만듬.
1998년 6월
ISO/IEC 16262 국제 표준에 완전히 맞추기 위해 변경
1999년 12월
오늘날 대부분의 브라우저가 지원하는 ECMAScript 버전이다.
정규식 추가, 더 나은 문자열 처리, 새로운 제어문, try/catch 예외 처리, 더 엄격한 오류 정의, 숫자 출력 형식 및 기타 개선 사항을 반영하였다.
2003년 6월
ECMAScript4는 ML로 작성된 프로토타입과 함께 JavaScript의 다음 버전으로 개발되었다.
그러나 TG39는 ECMAScript4기능에 동의할 수 없었고, 교착 상태를 방지하기 위해 위원회는 2008년 7월 말에 4가지 사항으로 요약되는 합의를 하였다.
- ECMAScript의 업데이트를 개발한다.
- ECMAScript4 보다 온건하지만 ECMAScript3 이후 버전보다 범위가 훨씬 더 큰 릴리스를 개발한다. (코드명 Harmony)
- 패키지, 네임스페이스, 초기 바인딩은 ECMAScript4의 기능에서 드롭한다.
- 다른 아이디어는 모든 TG39와 합의하에 개발한다.
따라서 ECMAScript4 개발자는 Harmony를 ECMAScript4 보다 덜 급진적으로 만드는데 동의하였고, TC39는 계속 언어를 발전시키는데 동의하였지만 결국 ECMAScript4는 언어의 복잡성과 관련된 정치적 차이로 인해 폐기되었고, 제 4판에 제안된 많은 기능이 완전히 삭제되었으며 일부는 6판에 통합되었다.
2004년 6월
E4X( ECMAScriipt for XML )로 알려진 ECMAScript의 확장을 정의하는 ECMA-357 표준을 발표하였다.
또한 ES-CP 또는 ECMA 327로 알려진 "컴팩트 프로필"을 정의했으며 이는 2015년 철회된 리소스 제약 장치용으로 설계되었다.
2009년 12월
ECMAScript5 버전이 업데이트 되었다.
이 버전은 보다 철저한 오류 검사를 제공하고, 오류가 발생하기 쉬운 구성을 피하기 위한 하위 집단인 "엄격 모드"를 추가하였다.
3판의 사양의 많은 모호성을 명확히 하고 해당 사양과 일관되게 다른 실제 구현 동작을 수용하였으며, Getter, Setter, Json 라이브러리 지원, 개체 속성에 대한 보다 완전한 리플렉션과 같은 몇 가지 새로운 기능을 추가하였다.
2011년 6월
ECMAScript 5.1판이 나왔으나 국제 표준 ISO/IEC 16262:2011의 3판과 완전히 일치한다.
2015년 6월
ECMAScript6 및 나중에 ECMAScript 2015로 이름이 변경된 버전이 완성되었다.
ECMAScript6는 브라우저에서 직접 컴파일 할 수 없으므로 ECMAScript5의 컴파일러가 필요한데, bale을 사용하여 브라우저 호환 자바 스크립트를 생성한다.
Python 스타일 생성기, 화살표 함수 표현식, 로컬 선언용 키워드, 상수 로컬 선언용 키워드, 이진 데이터, 형식화된 배열, 새로운 컬렉션(맵, 세트 및 WeakMap), 숫자 향상, 리플렉션, 프록시 및 템플릿 리터럴 등 광범위한 기능들이 추가되었다.
2016년 6월
매년 새 버전의 ECMAScript를 출시하기로 하였으나 ECMAScript6 와 같은 대규모 릴리스는 없을것이라 하였다.
ECMAScript 2016 (ES7)에는 지수 연산자와 Array.portotype.includes, 총 두가지 새로운 기능이 추가되었다
2017년 6월
비동기 함수인 async, await와 객체의 손쉬운 조작을 위한 Object.values, Obejct.entries 및 함수, 동시성 및 원자성을 위한 기능이 추가되었다.
2018년 6월
새로운 기능으로 개체 리터럴, Promise.prototype.finally 및 RegExp에 대한 추가를 위한 스프레드 연산자가 추가되었다.
2019년 6월
BigInt 크기의 정수, null 병합 연산자 및 globalThis 객체에 대한 기본 유형을 소개하였다.
BigInt 는 생성자 또는 구문을 사용하여 생성하며, 10n의 'n'은 숫자 리터럴 뒤에 배치된다.
null 병합 연산자는 왼쪽이 또는 ?? 일 때 오른쪽 피 연산자를 반환한다.
2020년 6월
replaceAll 문자열에 대한 방법이 소개되었다.
Promise.any(약속 결합자), AggreagateError(오류 논리 할당 연산자), WeakFef 및 FinalizationRegistry 등이 있으며 숫자 리터럴의 구분 기호가 더 정확해져서 Array.prototype.sort 정렬 순서가 되는 경우의 수가 줄었다.
2021년 6월
top-level을 도입하여 await 모듈의 최상위 수준에서 키워드를 사용할 수 있도록 변경되었다.
결론
내용이 너무 방대해서 솔직히 일부만 정리한 것일 텐데도 명확하지 않은 부분들이 있음에도 넘어간 곳도 있다.
뭐 언젠간 차차 다 알게 될 것이라고 생각한다.
'새롭게 시작하는 개발 이야기' 카테고리의 다른 글
javaScirpt - let, var, const의 차이점 - 7월 6일 발표 (0) | 2023.07.06 |
---|---|
JavaScript for loop 성능 비교글 정리 - 6월 8일 스터디 발표 (0) | 2023.06.08 |
한 입 크기로 잘라 먹는 리액트 1장 - 자바스크립트 기초 (0) | 2023.05.31 |
한 입 크기로 잘라먹는 리액트 3장 - node.js (1) | 2023.05.24 |
디자인 패턴 - 4월 27일 스터디 발표 (0) | 2023.04.27 |
- Total
- Today
- Yesterday
- header
- 인텔리J
- 일지
- 개발일지
- RequestHandler
- Spring Boot
- 스터디 회고
- springboot
- @Autowired
- Request Handler
- HTTP
- 자바스크립트
- JavaScript
- body
- Gradle
- Java
- MySQL
- 회고
- Spring
- 모듈
- mapping
- 한 입 크기로 잘라먹는 리액트
- homebrew
- 프로그래머스
- 멀티모듈
- web
- 개발
- spring-boot
- JAR
- graphQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |