ECMA스크립트 버전 기록

ECMAScript version history

ECMA스크립트Ecma International에서 개발한 JavaScript 표준입니다.2015년부터, 주요 버전들은 매년 6월에 출판되었습니다.

ECMA 스크립트 2023, 14번째이자 현재 버전은 2023년 6월에 출시되었습니다.

버전

게시된 날짜 이름. 이전 버전과의 변경 사항 편집자
1 1997년 6월 초판 가이 L. 스틸 주니어
2 1998년 6월 ISO/IEC 16262 국제 표준에 따라 사양을 완전히 조정하기 위한 편집 변경 사항 마이크 코울리쇼
3 1999년 12월 정규식 추가, 문자열 처리 개선, 새로운 제어문, 시도/캐치 예외 처리, 오류 정의 강화, 숫자 출력 형식 지정 및 기타 향상된 기능 마이크 코울리쇼
4 포기됨(2003년 6월 30일 최종 초안) 제4판은 언어의 복잡성에 대한 정치적 차이로 인해 폐기되었습니다.제4판용으로 제안된 많은 기능은 완전히 삭제되었으며, 일부 기능은 제6판에 통합되었습니다.
5 2009년 12월 보다 철저한 오류 검사를 제공하고 오류가 발생하기 쉬운 구성을 방지하기 위한 하위 집합인 "엄격 모드"를 추가합니다.3판 사양의 많은 모호성을 명확히 하고 해당 사양과 일관되게 다른 실제 구현의 동작을 수용합니다.게터 및 세터, JSON에 대한 라이브러리 지원 및 개체 [1]속성에 대한 보다 완벽한 반영과 같은 몇 가지 새로운 기능을 추가합니다. Pratap Lakshman, Allen Wirfs-Brock
5.1 2011년 6월 ECMA스크립트 표준의 이번 버전 5.1은 국제 표준 ISO/IEC 16262:2011의 세 번째 버전과 완전히 일치합니다. Pratap Lakshman, Allen Wirfs-Brock
6 2015년 6월[2] ECMA스크립트 2015(ES2015) 6판 ECMA스크립트 2015 참조 앨런 위프스-브록
7 2016년 6월[3] ECMA스크립트 2016(ES2016) 제7판 ECMA스크립트 2016 참조 브라이언 텔슨
8 2017년 6월[4] ECMA스크립트 2017(ES2017) 8판 ECMA스크립트 2017 참조 브라이언 텔슨
9 2018년 6월[5] ECMA스크립트 2018 (ES2018) 제9판 ECMA스크립트 2018 참조 브라이언 텔슨
10 2019년 6월[6] ECMA스크립트 2019 (ES2019) 제10판 ECMA스크립트 2019 참조 브라이언 텔슨, 브래들리 패리어스, 조던 하밴드
11 2020년 6월[7] ECMA스크립트 2020 (ES2020) 11판 ECMA스크립트 2020 참조 조던 하밴드, 케빈 스미스
12 2021년 6월[8] ECMA스크립트 2021 (ES2021) 12판 ECMA스크립트 2021 참조 조던 하밴드, 궈슈유, 마이클 피카라, 케빈 기븐스
13 2022년 6월[9] ECMA스크립트 2022 (ES2022) 13판 ECMA스크립트 2022 참조 궈슈유, 마이클 피카라, 케빈 기븐스
14 2023년 6월 ECMA 스크립트 2023(ES2023) 14판 ECMA 스크립트 2023 참조 궈슈유, 마이클 피카라, 케빈 기븐스

2004년 6월, Ecma International은 ECMA-357 표준을 발표하여 ECMA스크립트의 확장을 정의했습니다.또한 Ecma는 ES-CP 또는 ECMA 327로 알려진 ECMA스크립트의 "컴팩트 프로파일"을 정의했습니다.[10] 이는 2015년에 철회된 리소스 제한 장치용으로 설계되었습니다.

4판(폐기)

제안된 ECMA-262의 4번째 에디션(ECMAScript 4 또는 ES4)은 1999년 3번째 에디션이 발행된 이후 ECMA 스크립트에 대한 첫 번째 주요 업데이트가 될 것입니다.사양(참조 구현 포함)은 원래 2008년 [11]10월까지 완료하는 것이 목표였습니다.첫 번째 초안은 1999년 [12]2월에 작성되었습니다.2007년 [13]10월 23일 워킹 그룹에 의해 언어 개요가 공개되었습니다.

2008년 8월, ECMA스크립트 제4판 제안서는 ECMA스크립트 하모니라는 프로젝트 코드로 축소되었습니다.당시 하모니를 위해 논의 중인 특징은 다음과 같습니다.

이러한 기능의 목적은 부분적으로 프로그래밍을 더 잘 지원하고 동적인 스크립트 기능을 희생하여 성능을 향상시키는 것이었습니다.예를 들어 Adobe가 개발하고 오픈 소스로 제공하는 ActionScript용 가상 머신인 Tamarin은 특정 클래스의 스크립트에 JIT(Just-in-Time Compilation)를 지원합니다.

새로운 기능을 도입한 것 외에도 일부 ES3 버그는 에디션 [14][15]4에서 수정될 것으로 제안되었습니다.이러한 수정 및 기타 사항과 JSON 인코딩/디코딩 지원은 ECMA스크립트 5th Edition [16]사양에 포함되어 있습니다.

ES-CP (Compact Profile) 사양이 완료된 후 에디션 4에서 작업이 시작되었으며 넷스케이프의 자바스크립트 2 사양 이론과 마이크로소프트의 JScript 구현 경험의 균형을 맞추는 느린 진행이 약 18개월 동안 계속되었습니다.NET. 잠시 후 ECMA스크립트 for XML(E4X) 표준으로 초점이 옮겨졌습니다.업데이트에 논란이 없었던 것은 아닙니다.2007년 말, 나중에 모질라 재단의 CTO인 아이히와 인터넷 익스플로러의 플랫폼 설계자크리스 윌슨 사이의 논쟁이 여러 블로그에서 공개되었습니다.윌슨은 ECMA스크립트에 대한 제안된 변경으로 인해 이전 버전의 언어와 역호환성이 없어졌기 때문에, 업데이트는 "[17]웹을 깨는 것"에 해당하며, 변경에 반대하는 이해관계자들이 "보이지 않는 [18]곳에서 숨겨지고 있다"고 경고했습니다.Eich는 Wilson이 "블로그에서 거짓을 반복하는 것 같다"고 진술하고 반대 의견을 억압하려는 시도가 있었다는 것을 부인하고 비평가들에게 비호환성의 [19]구체적인 예를 제시하도록 도전했습니다.그는 Microsoft Silverlight와 Adobe AIR이 각각 C#과 ActionScript 3에 의존하고 있으며, 이 둘은 ECMA Script Edition [20]3보다 크고 복잡하다고 지적했습니다.

5판 – ECMA스크립트 2009

Yahoo, Microsoft, Google 및 기타 제4판 반대자들은 ECMA스크립트 3.1의 야심적이지 않은 업데이트를 설계하기 위해 자체 소위원회를 구성했습니다.이 에디션은 호환성에 중점을 두고 보안 및 라이브러리 업데이트에 초점을 맞출 것입니다.앞서 언급한 공개 스파링 이후, ECMA스크립트 3.1 팀과 ECMA스크립트 4 팀은 절충안에 합의했습니다. 두 버전은 의미론과 구문 모두에서 ECMA스크립트 4의 엄격한 하위 집합으로 유지되도록 팀 간 조정과 병행하여 작업될 것입니다.

그러나 각 팀의 서로 다른 철학으로 인해 하위 집합 규칙이 반복적으로 깨졌고, ECMA스크립트 4 반대자들이 앞으로 ECMA스크립트 4를 지지하거나 구현할 수 있을지에 대해서는 의문이 남았습니다.Ecma Technical Committee 39 내에서 ECMAcript의 미래에 대한 의견 차이가 있은 지 1년이 지난 후, 두 팀은 2008년 7월에 새로운 타협에 도달했습니다: Brendan Eich는 Ecma TC39가 모든 당사자의 완전한 협력으로 ECMAscript 3.1(이후 ECMAscript, 5th Edition으로 이름 변경) 프로젝트에 집중할 것이라고 발표했습니다.그리고 공급업체들은 2009년 [21][22]초까지 적어도 두 개의 상호 운용 가능한 구현을 목표로 할 것입니다.2009년 4월, Ecma TC39는 제5판의 "최종" 초안을 발표하고 상호 운용 가능한 구현의 테스트가 [23]7월 중순까지 완료될 것이라고 발표했습니다.2009년 12월 3일, ECMA-262 제5판이 [24]발행되었습니다.

JSON도 추가되었습니다.String.trim()문자열을 둘러싼 공백을 쉽게 제거하기 위해(" example "로."example"),String.charAt()문자열의 주어진 위치에서 단일 문자를 반환하는 것, 그리고Array.isArray()개체의 마지막 값 쌍 뒤에 있는 쉼표(var example = { "property1":"value1", "property2":"value2", }또한 구문 오류가 [25]더 이상 발생하지 않습니다.

6판 – ECMA스크립트 2015

제6판인 ECMA스크립트 6(ES6)은 2015년 [2][26]6월에 완성되었으며, 이후 ECMA스크립트 2015로 이름이 변경되었습니다.이 업데이트는 클래스 선언을 포함하여 복잡한 응용 프로그램을 작성하기 위한 중요한 새로운 구문을 추가합니다.class Foo { ... }), ES6 모듈(예:import * as moduleName from "..."; export const Foo그러나 ECMA스크립트 5 strict 모드와 동일한 용어로 정의합니다.다른 새로운 기능에는 반복기와for...of루프, 파이썬 스타일 생성기, 화살표 함수 식 (() => {...}),let로컬 선언에 대한 키워드,const일정한 로컬 선언, 이진 데이터, 유형화된 배열, 새 컬렉션(맵, 세트 및 약한 맵), 약속, 숫자 및 수학 향상, 반영, 프록시(가상 개체 및 래퍼를 위한 메타프로그래밍) 및 백틱(backtick)을 사용하는 템플릿 리터럴에 대한 키워드(`)는 이스케이프 [27][28]문자가 없는 다중 줄 문자열입니다.전체 목록은 [29][30]광범위합니다.최초의 "ECM스크립트 하모니" 사양으로 "ES6 하모니"라고도 합니다.

제7판 – ECMA스크립트 2016

2016년 [3]6월 제7판, 즉 ECMA스크립트 2016이 완성되었습니다.이 기능에는 변수 및 함수의 블록 범위 지정, (변수의) 파괴 패턴, 적절한 테일 호출, 지수 연산자가 포함됩니다.**숫자의 경우,await,async(ES2017을 위한 준비로서) 비동기 프로그래밍을 위한 키워드, 그리고Array.prototype.includes기능.[3][31]

지수 연산자는 다음과 같습니다.Math.pow그러나 Python, F#, Perl 및 Ruby와 같은 언어와 유사한 간단한 구문을 제공합니다.async/await약속을 사용하고 비동기 코드를 개발하는 더 쉬운 방법으로 환영받았습니다.

8판 – ECMA스크립트 2017

제8판, 즉 ECMA스크립트 2017은 2017년 [4]6월에 완성되었습니다.기능은 다음과 같습니다.Object.values,Object.entries그리고.Object.getOwnPropertyDescriptors객체를 쉽게 조작할 수 있는 기능,async/await생성기와 약속을 사용하는 구성과 동시성 및 [32][4]원자성을 위한 추가 기능.

제9판 – ECMA스크립트 2018

2018년 [5]6월 제9회, 즉 ECMA스크립트 2018이 최종 결정되었습니다.새 기능에는 산포 연산자 및 정지 파라미터가 포함됩니다(...) 객체 리터럴, 비동기 반복의 경우Promise.prototype.finallyRegExp에 [5]추가할 수 있습니다.

스프레드 연산자를 사용하면 아래와 같이 개체 속성을 쉽게 복사할 수 있습니다.

허락하다 물건 = {a: 1, b: 2}  허락하다 objectClone = 물건.할당하다({}, 물건) ES2018 이전 허락하다 objectClone = {...물건} ES2018 구문  허락하다 다른 개체 = {c: 3, ...물건} 콘솔.로그.(다른 개체) -> {c: 3, a: 1, b: 2} 

제10판 – ECMA스크립트 2019

2019년 [6]6월 제10판 또는 ECMA스크립트 2019가 발행되었습니다.추가된 기능은 다음을 포함하지만 이에 국한되지 않습니다.Array.prototype.flat,Array.prototype.flatMap로의 변경.Array.sort그리고.Object.fromEntries.[6]

Array.sort이제 안정성이 보장되므로 정렬된 배열에서 정렬 우선 순위가 같은 요소가 동일한 순서로 나타납니다.Array.prototype.flat(depth=1)배열을 지정된 깊이로 평평하게 만듭니다. 즉, 모든 하위 배열 요소(지정된 깊이까지)가 재귀적으로 연결됩니다.

또 다른 주목할 만한 변화는 소위 캐치 바인딩이 [33]선택 사항이 되었다는 것입니다.

11판 – ECMA스크립트 2020

제11판 또는 ECMA스크립트 2020은 2020년 [7]6월에 발행되었습니다.새로운 기능 외에도, 이 버전은 다음과 같은 기능을 도입했습니다.BigInt임의 크기 정수에 대한 원시 유형, nullish 병합 연산자 및 전역 물건.[7]

BigInt는 다음 중 하나로 생성됩니다.BigInt구문을 사용하는 생성자10n여기서 "n"은 리터럴 숫자 뒤에 배치됩니다.BigInt는 다음과 같은 정수의 표현과 조작을 허용합니다.Number.MAX_SAFE_INTEGER숫자는 두 배의 정밀도의 64비트 IEEE 754 값으로 표시됩니다.기본 제공 기능은MathBigInt와 호환되지 않습니다. 예를 들어, BigInt의 지수화는 다음을 사용하여 수행되어야 합니다.**대신 연산자Math.pow.

널리쉬 병합 연산자,??왼쪽이 다음일 때 오른쪽 피연산자를 반환합니다.null또는undefined이는 다음과 대조적입니다. 연산자, 반환됩니다."string"아래 값과 같이 모든 "반복적인" 값에 대해 계산합니다.

미정의 ?? "문자열" -> "string" 무효의 ?? "문자열" -> "string" 거짓의 ?? "문자열" -> 거짓 NaN ?? "문자열" -> NaN 

선택적 체인을 사용하면 각 수준에서 AND 검사를 수행하지 않고도 개체의 중첩된 속성에 액세스할 수 있습니다.예를 들면const zipcode = person?.address?.zipcode속성이 없는 경우zipcode될 것이다undefined.

12판 – ECMA 스크립트 2021

제12판 ECMA스크립트 2021은 2021년 [8]6월에 발행되었습니다.이 버전에서는 다음을 소개합니다.replaceAll문자열에 대한 방법;Promise.any입력 값이 충족될 때 단락되는 약속 조합.AggregateError한 번에 여러 개의 오류를 나타내는 새 오류 유형, 논리적 할당 연산자(??=,&&=, =);WeakRef가비지 컬렉션에서 보존하지 않고 대상 객체를 참조하는 경우.FinalizationRegistry대상 개체가 가비지 수집될 때 수행되는 정리 작업의 등록 및 등록 취소를 관리합니다. 숫자 리터럴을 위한 구분 기호(1_000); 및Array.prototype.sort보다 정확하게 작성되어 구현 정의 정렬 순서를 생성하는 사례의 수가 감소했습니다.

13판 – ECMA 스크립트 2022

제13판 ECMA스크립트 2022는 2022년 [9]6월에 발행되었습니다.이 버전에서는 최상위 레벨을 소개합니다.await모듈의 최상위 수준에서 키워드를 사용할 수 있도록 허용; 새로운 클래스 요소: 공용 및 개인 인스턴스 필드, 공용 및 개인 정적 필드, 개인 인스턴스 메서드 및 접근자, 개인 정적 메서드 및 접근자; 클래스 내부의 정적 블록, 클래스별 평가 초기화를 수행할 수 있습니다.#x in obj구문: 객체에 개인 필드가 있는지 테스트합니다. 정규식은 다음을 통해 인덱스와 일치합니다./d일치하는 서브스트링에 대한 시작 및 종료 인덱스를 제공하는 플래그.cause에 대한 재산.Error오류의 원인 체인을 기록하는 데 사용할 수 있는 객체; 상대 인덱싱을 허용하는 Strings, Arrays 및 TypedArrays에 대한 at 메서드; 및Object.hasOwn에 대한 편리한 대안.Object.prototype.hasOwnProperty.

14판 – ECMA 스크립트 2023

제14판 ECMA스크립트 2023은 2023년 [34]6월에 발행되었습니다.이 버전에서는 다음을 소개합니다.toSorted,toReversed,with,findLast,그리고.findLastIndex에 대한 방법.Array.prototype그리고.TypedArray.prototype뿐만 아니라toSpliced에 대한 방법.Array.prototype에 대한 지원 추가#!실행 가능한 ECMA스크립트 파일을 더 쉽게 만들기 위해 파일의 시작 부분에 주석을 추가하고, 약한 컬렉션에서 대부분의 기호를 키로 사용할 수 있도록 했습니다.

ES.다음

ES.다음은 작성 시 다음 버전을 나타내는 동적 이름입니다.ES.다음 기능에는 비준된 사양의 일부가 아닌 완료된 제안서에 나열된 완료된 제안서(일명 "4단계 제안서")가 포함됩니다.언어 위원회는 "생활 사양" 모델을 따르므로 이러한 변경 사항은 표준의 일부이며, 비준은 형식입니다.

레퍼런스

  1. ^ GhostarchiveWayback Machine에서 보관:"Changes to JavaScript, Part 1: EcmaScript 5". YouTube. 2009-05-18. Retrieved 2013-10-31.
  2. ^ a b "ECMAScript 2015 Language Specification". Ecma International. June 2015. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  3. ^ a b c "ECMAScript 2016 Language Specification". Ecma International. June 2016. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  4. ^ a b c "ECMAScript 2017 Language Specification". Ecma International. June 2017. Archived from the original on 2021-01-17. Retrieved 2021-06-28.
  5. ^ a b c "ECMAScript 2018 Language Specification". Ecma International. June 2018. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  6. ^ a b c "ECMAScript 2019 Language Specification". Ecma International. June 2019. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  7. ^ a b c "ECMAScript 2020 Language Specification". Ecma International. June 2020. Archived from the original on 2021-01-18. Retrieved 2021-06-28.
  8. ^ a b "ECMAScript 2021 Language Specification". Ecma International. June 2021. Archived from the original on 2021-06-24. Retrieved 2021-06-26.
  9. ^ a b "Ecma-262".
  10. ^ 2015-03-24 Wayback Machine에서 2017-06-23 회의 노트 보관.ESD에 대해 논의합니다.또한 Ecma가 철회표준 아카이브 2015-08-13을 참조하십시오.ECMA.
  11. ^ Hansen, Lars T (2007-10-22). "ES4 overview paper released". mozilla.org. Mail.mozilla.org. Archived from the original on 2013-11-02. Retrieved 2013-10-31.
  12. ^ Peyrott, Sebastian (2021-03-04). "The Real Story Behind ECMAScript 4". auth0.com. Archived from the original on 2020-05-12. Retrieved 2020-03-05.
  13. ^ "Proposed ECMAScript 4th Edition – Language Overview" (PDF). ecmascript.org. 23 October 2007. Archived from the original (PDF) on 23 December 2010.
  14. ^ John Resig. "John Resig – Bug Fixes in JavaScript 2". Ejohn.org. Archived from the original on 2013-11-02. Retrieved 2013-10-31.
  15. ^ "Compatibility Between ES3 and Proposed ES4" (PDF). Ecmascript.org. Archived from the original (PDF) on 2014-07-24. Retrieved 2013-10-31.
  16. ^ "ECMAScript Language Specification" (PDF). Ecma International. 2009-04-19. Archived from the original (PDF) on 2009-04-19. Retrieved 2018-03-19.
  17. ^ "ECMAScript 3 and Beyond – IEBlog – Site Home – MSDN Blogs". Blogs.msdn.com. 2007-10-30. Archived from the original on 2010-02-11. Retrieved 2013-10-31.
  18. ^ "What I think about ES4. – Albatross! – Site Home – MSDN Blogs". Blogs.msdn.com. 2007-10-31. Archived from the original on 2010-01-27. Retrieved 2013-10-31.
  19. ^ "Open letter to Chris Wilson". Brendan Eich. 2007-10-31. Archived from the original on 2011-09-16. Retrieved 2013-10-31.
  20. ^ "JavaScript 2 and the Open Web". 2007-11-20. Archived from the original on 2014-02-10. Retrieved 2014-01-20.
  21. ^ "ECMAScript Harmony". Mail.mozilla.org. 13 August 2008. Archived from the original on 2013-08-26. Retrieved 2013-10-31.
  22. ^ "A Major Milestone in JavaScript Standardization – JScript Blog – Site Home – MSDN Blogs". Blogs.msdn.com. 2009-04-09. Archived from the original on 2010-03-23. Retrieved 2013-10-31.
  23. ^ "Ecma International finalises major revision of ECMAScript". Ecma International. 2009-04-09. Archived from the original on 2011-09-04. Retrieved 2009-05-22.
  24. ^ "Ecma previous news". Ecma-international.org. Archived from the original on 2020-04-16. Retrieved 2020-03-29.
  25. ^ W3 학교의 자바스크립트 버전
  26. ^ Krill, Paul. "It's official: ECMAScript 6 is approved". InfoWorld. Archived from the original on 2018-03-23. Retrieved 2018-03-19.
  27. ^ "5 Great Features in EcmaScript 6 (ES6 Harmony) – Wintellect". Wintellect. 2014-03-24. Archived from the original on 2017-07-22. Retrieved 2018-03-19.
  28. ^ "ECMAScript 6 (ES6): What's New In The Next Version Of JavaScript". Smashing Magazine. 2015-10-28. Archived from the original on 2017-11-24. Retrieved 2018-03-19.
  29. ^ "ECMAScript 6: New Features: Overview and Comparison". es6-features.org. Archived from the original on 2018-03-18. Retrieved 2018-03-19.
  30. ^ "Standard ECMA-262 6th Edition / June 2015 ECMAScript 2015 Language Specification 14.2 Arrow Function Definitions". www.ecma-international.org. 2015. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  31. ^ Saboff, Michael (2016-05-23). "ECMAScript 6 Proper Tail Calls in WebKit". WebKit. Archived from the original on 2019-04-11. Retrieved 2019-04-11.
  32. ^ "ECMAScript 2017 (ES8): the final feature set". 2ality. Archived from the original on 2018-04-23. Retrieved 2018-04-23.
  33. ^ "ES2019: optional catch binding". 2ality.com. 2017-08-13. Retrieved 26 April 2022.
  34. ^ "ECMAScript 2023 Language Specification". Ecma International. June 2023. Retrieved 2023-06-30.{{cite web}}CS1 유지보수: url-status(링크)
  35. ^ "ES.Next is the next edition of the ECMAScript Language Specification — Tuto Javascript". gdevops.gitlab.io. Retrieved 2023-07-05.

외부 링크

ISO 표준

ECMA 표준