ECMAScript

ECMAScript
ECMAScript
패러다임멀티패러다임: 프로토타입 기반, 기능, 필수
설계자브렌단 아이치, Ecma International
처음 등장한1997년; 25년 전(1997년)
타이핑 분야약하고 역동적인
웹 사이트www.ecma-international.org/publications-and-standards/standards/ecma-262/
주요 구현
JavaScript, SpiderMonkey, V8, ActionScript, JScript, QtScript, InScript, Google Apps Script
영향을 받다
Self, HyperTalk, AWK, C, CoffeeScript, Perl, Python, Java, Scheme
ECMAScript(파일 형식)
Crystal source.svg
파일 이름 확장자
.es
인터넷 미디어 유형
응용 프로그램 / 에코스크립트
개발자Sun Microsystems,
Ecma International
초기 릴리즈1997년 6월, 25년 전(1997-06)
최신 릴리즈
에디션 12
2021년 6월, 1년 전(2021-06)
포맷의 종류스크립트 언어
웹 사이트ECMA-262, ECMA-290,
ECMA-327, ECMA-357,
ECMA-402

ECMAScript(/'km'skr'pt/)(또는 ES)[1]서로 다른 [2]웹 브라우저 에 웹 페이지의 상호 운용성을 보장하기 위한 JavaScript 표준입니다.ECMA-262 문서에 따라 Ecma International에 의해 표준화되어 있습니다.ECMAScript는 일반적으로 World Wide Web에서 클라이언트스크립트에 사용되며 Node.js사용한 서버 애플리케이션 및 서비스 작성에 점점 더 많이 사용되고 있습니다.

ECMAScript, ECMA-262 및 JavaScript

ECMA-262 또는 ECMAScript 언어 사양은 ECMAScript 언어 또는 [3]ECMAScript만을 정의합니다.ECMA-262는 Array, Function, global 의 핵심 API 언어 구문과 의미만을 지정합니다.는 JavaScript의 유효한 구현이지만 입출력 또는 파일 시스템 처리와 같은 자체 기능을 추가합니다.

역사

ECMAScript 사양은 NetscapeBrendan Eich에 의해 개발된 스크립팅 언어의 표준 사양으로 처음에는 Mocha, 다음에는 LiveScript,[4] 그리고 마지막으로 JavaScript로 명명되었습니다.1995년 12월, Sun Microsystems와 Netscape는 보도 [5]자료에서 JavaScript를 발표했다.1996년 11월 Netscape는 [6]JavaScript의 표준화를 촉진하기 위해 Ecma International Standards Organization의 회의를 발표했습니다.ECMA-262의 초판은 1997년 6월에 ECMA 총회에서 채택되었습니다.그 이후로 언어 표준의 여러 판이 출판되었다."ECMAScript"라는 이름은 언어 표준화에 관여한 조직들, 특히 초기 표준 세션에서 논쟁이 지배했던 Netscape와 Microsoft 간의 절충안이었다.Eich는 "ECMAScript는 항상 [7]피부병처럼 들리는 원치 않는 상표명이었습니다."ECMAScript는 보안 분석 [8]및 표준화를 위해 스탠포드 대학런던 임페리얼 칼리지 컴퓨팅 학부에 의해 운영 의미론을 통해 공식화되었습니다.

버전

ECMA-262에는 11개의 에디션이 발행되어 있습니다.표준 버전 12에 대한 작업은 2021년 [9]6월에 완료되었다.

ECMAScript 버전 이력
발행일 이름. 구판과의 변경 에디터
1 1997년 6월 초판 가이 L. 스틸 주니어
2 1998년 6월 ISO/IEC 16262 국제표준에 완전히 부합하도록 편집 변경 마이크 코울리쇼
3 1999년 12월 정규 표현식 추가, 보다 나은 문자열 처리, 새로운 제어문, try/catch 예외 처리, 보다 엄격한 오류 정의, 숫자 출력 형식 지정 및 기타 기능 향상 마이크 코울리쇼
4 포기 (최종 드래프트 2003년 6월 30일) 제4판은 언어의 복잡성에 관한 정치적 차이 때문에 폐지되었다.제4 에디션용으로 제안된 기능의 대부분은 완전히 폐기되었습니다.그 중 일부는 제6 에디션으로 통합되었습니다.
5 2009년 12월 보다 철저한 오류 체크를 제공하고 오류가 발생하기 쉬운 구조를 방지하기 위한 하위 집합인 "strict 모드"를 추가합니다.제3판 사양의 많은 애매한 점을 명확히 하고, 그 사양과 일관되게 다른 실장의 동작에 대응합니다.getters 및 setters, JSON에 대한 라이브러리 지원 및 [10]개체 속성에 대한 보다 완벽한 리플렉션과 같은 몇 가지 새로운 기능을 추가합니다. 프라탑 락슈만, 앨런 위브스-브록
5.1 2011년 6월 ECMAScript 표준의 이 버전 5.1은 국제 표준의 ISO/IEC 16262:2011의 제3판과 완전히 일치합니다. 프라탑 락슈만, 앨런 위브스-브록
6 2015년 6월[11] ECMAScript 2015 (ES2015) 제6판 ECMAScript 2015 참조 앨런 위프스-브록
7 2016년 6월[12] ECMAScript 2016 (ES2016) 제7판 ECMAScript 2016 참조 브라이언 터슨
8 2017년 6월[13] ECMAScript 2017 (ES2017) 제8판 ECMAScript 2017 참조 브라이언 터슨
9 2018년 6월[14] ECMAScript 2018 (ES2018) 제9판 ECMAScript 2018 참조 브라이언 터슨
10 2019년 6월[15] ECMAScript 2019(ES2019) 제10판 ECMAScript 2019 참조 브라이언 터슨, 브래들리 파리아스, 조던 하밴드
11 2020년 6월[16] ECMAScript 2020 (ES2020) 제11판 ECMAScript 2020 참조 조던 하밴드, 케빈 스미스
12 2021년 6월[9] ECMAScript 2021 (ES2021) 제12판 ECMAScript 2021 참조 조던 하반드, 슈유궈, 마이클 피카라, 케빈 기븐스

2004년 6월에 ECMA International은 ECMA-357 표준을 발행하여 ECMAcript for XML(E4X)로 알려진 ECMAcript의 확장을 정의했습니다.또한 ECMAScript에 대한 "컴팩트 프로파일"도 정의했습니다. ES-CP 또는 ECMA 327은 리소스가 제한된 디바이스를 위해 설계되었으며 2015년에 [17]폐지되었습니다.

제4판 (폐기)

제안된 ECMA-262의 제4판(ECMAScript 4 또는 ES4)은 1999년 제3판이 발행된 이후 ECMAScript에 대한 첫 번째 주요 업데이트가 될 것이다.이 사양(레퍼런스 실장 포함)은 당초 2008년 [18]10월까지의 완료를 목표로 하고 있었습니다.첫 번째 [19]초안은 1999년 2월 날짜였다.언어 [20]개요는 작업 그룹에 의해 2007년 10월 23일에 발표되었습니다.

2008년 8월까지 ECMAScript 제4판 제안서는 ECMAScript Harmony라는 프로젝트 코드로 축소되었습니다.당시 Harmony에서 논의 중인 기능은 다음과 같습니다.

이러한 기능의 목적은 대규모 프로그래밍을 보다 효과적으로 지원하고 성능을 향상시키기 위해 스크립트의 동적 기능을 일부 희생시키는 데 있었습니다.예를 들어 Adobe가 개발 및 오픈소싱한 ActionScript용 가상 머신인 Tamarin은 특정 클래스의 스크립트에 대해 JIT(Just-In-Time Compilation)를 지원합니다.

신기능의 도입에 가세해, 일부의 ES3 버그를 에디션 [21][22]4에서 수정하는 것이 제안되고 있습니다.이러한 수정 및 기타 JSON 인코딩/디코딩 지원은 ECMAScript 5th Edition [23]사양으로 접혀 있습니다.

작업은 ES-CP(컴팩트 프로파일) 사양이 완료된 후 Edition 4에서 시작되어 Netscape의 JavaScript 2 사양 이론과 마이크로소프트의 JScript 구현 경험의 균형을 맞추면서 약 18개월 동안 계속되었습니다.NET. 얼마 후 XML용 ECMAScript(E4X) 표준으로 초점이 이동했습니다.업데이트에 논란이 없는 것은 아닙니다.2007년 말, 후에 Mozilla Foundation의 CTO가 된 Eich와 MicrosoftInternet Explorer 플랫폼 설계자Chris Wilson 간의 토론이 많은 블로그에서 공개되었습니다.Wilson은 ECMAScript에 대한 제안된 변경으로 인해 이전 버전의 언어와는 일부 면에서 역호환성이 생겼기 때문에 업데이트는 "웹을 파괴하는 것"[24]에 해당하며 변경에 반대하는 이해관계자들은 "보이지 않는 것"[25]이라고 경고했다.아이히는 윌슨이 "블로그에서 거짓을 반복하는 것 같다"고 말했고, 반대 의견을 억누르려는 시도가 있었다는 것을 부인했고,[26] 비호환의 구체적인 예를 들도록 비평가들에게 도전했다.Microsoft Silverlight와 Adobe AIR는 각각 C#과 ActionScript 3에 의존하고 있으며, 둘 다 ECMAScript Edition [27]3보다 크고 복잡하다고 그는 지적했습니다.

제5판 – ECMAScript 2009

야후, 마이크로소프트, 구글 및 기타 제4판 반대자들은 ECMAScript 3.1이라는 이름의 ECMAScript 3의 업데이트를 설계하기 위해 자체 소위원회를 구성했습니다.이 에디션에서는 호환성에 중점을 두고 보안 및 라이브러리 업데이트에 초점을 맞춥니다.앞서 언급한 공개 스파링 후 ECMAScript 3.1과 ECMAScript 4 팀은 타협에 합의했습니다.ECMAScript 3.1이 의미론과 구문 모두에서 ECMAScript 4의 엄격한 서브셋으로 유지되도록 팀 간 조정을 통해 두 에디션을 병행하여 작업하기로 했습니다.

그러나 각 팀의 다른 철학으로 인해 하위 집합 규칙이 반복적으로 깨졌고 ECMAScript 4 반대자들이 향후 ECMAScript 4를 지지하거나 이행할지는 여전히 의문이었다.Ecma Technical Committee 39에서 ECMAScript의 장래에 관한 의견 불일치로부터 1년 이상 경과한 후, 양 팀은 2008년 7월에 새로운 타협에 도달했습니다.Brendan Eich는 ECMAScript 3.1(나중에 ECMAScript, 5th Edition으로 명칭 변경)에 주력하고, 모든 벤더와의 완전한 콜라보레이션을 실시한다고 발표했습니다.님은 [28][29]2009년 초까지 상호 운용 가능한 구현을 2개 이상 목표로 하고 있습니다.2009년 4월, Ecma TC39는 제5판의 「최종」초안을 발행해, 상호 운용 가능한 실장 테스트가 [30]7월 중순까지 완료될 전망이라고 발표했습니다.2009년 12월 3일, ECMA-262 제5판이 [31]발행되었습니다.

추가에는 JSON,String.trim()끈을 감싼 여백을 쉽게 제거하다" example "로."example"),String.charAt()문자열의 특정 위치에서 단일 문자를 반환합니다.Array.isArray(). 객체의 마지막 값 쌍 뒤에 쉼표(var example = { "property1":"value1", "property2":"value2", })에서도 구문 [32]오류가 발생하지 않게 되었습니다.

제6판 – ECMAScript 2015

제6판, ECMAScript 6(ES6)은 [11][33]2015년 6월에 완성되었다.이 업데이트는 클래스 선언을 포함한 복잡한 응용 프로그램을 쓰기 위한 중요한 새로운 구문을 추가합니다.class Foo { ... }), ES6 모듈은 다음과 같습니다.import * as moduleName from "..."; export const Foo단, ECMAScript 5 strict 모드와 같은 용어로 정의되어 있습니다.기타 신기능에는 반복기 및for...of루프, Python 스타일 생성기, 화살표 함수식(() => {...}),let키워드를 지정합니다.const키워드: 고정 로컬 선언, 바이너리 데이터, 유형 배열, 새로운 컬렉션(맵, 세트 및 WeakMap), 약속, 수 및 산술 확장, 리플렉션, 프록시(가상 객체 및 래퍼 메타프로그래밍), 백틱을 사용한 템플릿리터럴(`이스케이프 [34][35]문자를 사용하지 않는 여러 줄 문자열의 경우).전체 목록은 [36][37]광범위합니다.최초의 「ECMAScript Harmony」사양으로서 「ES6 Harmony」라고도 불립니다.

제7판 – ECMAScript 2016

제7판(ECMAScript 2016)은 [12]2016년 6월에 완성되었습니다.변수 및 함수의 블록 범위 지정, 패턴 파괴(변수), 적절한 테일 호출, 지수 연산자 등의 기능이 있습니다.**숫자의 경우,await,async(ES2017의 준비로서) 비동기 프로그래밍용 키워드 및Array.prototype.includes기능합니다.[12][38]

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

제8판 – ECMAScript 2017

제8판, 즉 ECMAScript 2017은 [13]2017년 6월에 완성되었습니다.그 기능에는,Object.values,Object.entries그리고.Object.getOwnPropertyDescriptors오브젝트를 쉽게 조작할 수 있는 기능,async/await생성기와 약속, 동시성과 [39][13]원자론을 위한 추가 기능을 사용하는 구성입니다.

제9판 – ECMAScript 2018

제9판(ECMAScript 2018)[14]은 2018년 6월에 완성되었습니다.새로운 기능에는 산포 연산자 및 휴식 파라미터가 포함됩니다(...) 오브젝트 리터럴, 비동기 반복,Promise.prototype.finally및 RegExp에 [14]추가합니다.

확산 연산자를 사용하면 아래와 같이 객체 속성을 쉽게 복사할 수 있습니다.

허락하다 물건 = {a: 1, b: 2}  허락하다 오브젝트 클론 = 물건.할당하다({}, 물건) // ES2018 이전 허락하다 오브젝트 클론 = {...물건} // ES2018 구문  허락하다 other Object(기타 오브젝트) = {c: 3, ...물건} 콘솔.로그.(other Object(기타 오브젝트)) // -> {c: 3, a: 1, b: 2) 

제10판 – ECMAScript 2019

제10판, 즉 ECMAScript 2019는 2019년 [15]6월에 발행되었다.추가된 기능은 다음과 같습니다.Array.prototype.flat,Array.prototype.flatMap, 의 변경점Array.sort그리고.Object.fromEntries를 클릭합니다.[15]

Array.sort이제 안정성이 보장됩니다. 즉, 정렬 우선순위가 동일한 요소가 정렬된 배열에 동일한 순서로 표시됩니다. Array.prototype.flat(depth=1)는 지정된 깊이까지 배열을 평탄화합니다.즉, 모든 서브 어레이 요소(지정 깊이까지)가 재귀적으로 연결됩니다.

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

제11판 – ECMAScript 2020

11번째 판 또는 ECMAScript 2020은 2020년 [16]6월에 발행되었습니다.이 버전에서는 새로운 기능과 더불어BigInt임의 크기의 정수에 대한 원시 유형, nullish 병합 연산자 및 전역 [16]오브젝트

BigInt는 다음 중 하나를 사용하여 생성됩니다.BigInt컨스트럭터 또는 구문 사용10n여기서 "n"은 숫자 리터럴 뒤에 배치됩니다.BigInts는 다음 값을 넘는 정수의 표현과 조작을 가능하게 합니다.Number.MAX_SAFE_INTEGER단, 숫자는 2배 정밀도의 64비트 IEEE 754 값으로 표시됩니다.에 내장된 기능MathBigInts와 호환되지 않습니다.예를 들어 BigInts의 지수화는 BigInts의**대신 연산자Math.pow.

Nullish 병합 연산자,??왼쪽이 다음일 때 오른쪽 피연산자를 반환합니다.null또는undefined이것은, 의 경우와 대조됩니다. 연산자: 반환됩니다."string"아래 값과 같은 모든 "비교적" 값에 대해 설명합니다.

정의되어 있지 않다 ?? "문자열' // -> "문자열" 무효 ?? "문자열' // -> "문자열" 거짓의 ?? "문자열' // -> false NaN ?? "문자열' // -> NaN 

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

제12판 – ECMAScript 2021

제12판 또는 ECMAScript 2021은 2021년 [9]6월에 발행되었습니다.이 버전에서는replaceAll문자열 방식Promise.any, 입력값이 충족될 때 단락되는 약속 조합기.AggregateError한 번에 여러 오류를 나타내는 새로운 오류 유형, 논리 할당 연산자(??=,&&=, =);WeakRef가비지 컬렉션에서 타깃오브젝트를 보존하지 않고 참조할 수 있습니다.FinalizationRegistry타겟 오브젝트가 가비지 수집되었을 때 실행되는 청소 조작의 등록 및 등록 해제를 관리하려면 , 숫자 리터럴의 구분자( ).1_000);Array.prototype.sort는 보다 정밀하게 만들어져 구현 정의 정렬 순서가 되는 경우의 수를 줄였습니다.

ES.다음

ES.Next는 작성 시 다음 버전을 나타내는 동적 이름입니다.ES.다음 기능에는 비준된 규격의 일부가 아닌 최종 제안서에 기재된 최종 제안서(일명 '4단계 제안서')가 포함됩니다.언어위원회는 생활규격 모델을 따르기 때문에 이러한 변경은 기준의 일부이며 비준은 [citation needed]형식적인 것이다.

특징들

ECMAScript 언어에는 구조화,[41] 동적, 기능성프로토타입 기반 기능이 포함됩니다.

필수적이고 구조화된

ECMAScript JavaScript는 C 스타일의 구조화된 프로그래밍을 지원합니다.이전에는 JavaScript는 키워드를 사용한 함수 범위 설정만 지원했습니다.var그러나 ECMAScript 2015는 키워드를 추가했습니다.let그리고.constJavaScript가 블록 범위 지정과 함수 범위 지정을 모두 지원할 수 있습니다.JavaScript는 자동 세미콜론 삽입을 지원합니다.즉, 일반적으로 C에서 문을 종료하기 위해 사용되는 세미콜론은 JavaScript에서 [42]생략될 수 있습니다.

C스타일의 언어와 마찬가지로 제어 플로우는while,for,do/while,if/else,그리고.switch진술들.함수의 형식이 약하므로 모든 유형을 허용하거나 반환할 수 있습니다.기본적으로 제공되지 않은 인수undefined.

약하게 입력됨

ECMAScript가 약하게 입력되었습니다.즉, 수행 중인 작업에 따라 특정 유형이 암묵적으로 할당됩니다.그러나 JavaScript가 한 유형에서 다른 유형으로 변수를 변환하는 구현에는 몇 가지 특이한 점이 있습니다.이런 별난 일들은 [43][44]와트라는 제목의 강연의 주제가 되어왔다.

역학

ECMAScript는 동적으로 입력됩니다.따라서 타입은 식이 아닌 값과 관련지어집니다.ECMAScript는 [45]타이핑을 포함한 다양한 개체 유형 테스트 방법을 지원합니다.

변환 중

ES 2015 이후 JavaScript를 변환하는 것은 매우 일반적입니다.변환은 새로운 버전의 JavaScript가 사용되는 소스 대 소스 컴파일로, 트랜스필러는 소스 코드를 이전 브라우저에서 지원되도록 고쳐 씁니다.일반적으로 트랜스필러는 ES3로 전환되어 모든 버전의 브라우저와 호환성을 유지합니다.필요에 따라 특정 버전으로 변환하는 설정을 구성할 수 있습니다.트랜스필링은 빌드 프로세스에 추가 단계를 추가하며 폴리필의 필요성을 피하기 위해 수행되기도 합니다.폴리필은 폴리필이 없는 오래된 환경에 새로운 기능을 제공합니다.폴리필은 사용자의 브라우저 또는 서버와 같은 인터프리터에서 런타임에 이 작업을 수행합니다.대신 변환하면 개발 빌드 단계에서 ECMA 코드가 인터프리터에 도달하기 전에 코드가 다시 작성됩니다.

준거

2010년에 Ecma International은 Ecma 262 ECMAScript의 [46]표준 테스트 개발을 시작했습니다.Test262는 ECMAScript 적합성 테스트 스위트로, JavaScript 구현이 ECMAScript 사양을 얼마나 준수하는지 확인하기 위해 사용할 수 있습니다.테스트 세트에는 수천 개의 개별 테스트가 포함되어 있으며, 각 테스트는 ECMAScript 규격의 특정 요구 사항을 테스트합니다.Test262의 개발은 Ecma Technical Committee 39(TC39)의 프로젝트입니다.테스트 프레임워크와 개별 테스트는 TC39의 회원 조직에 의해 작성되며 Test262에서 사용하기 위해 Ecma에 기여합니다.

구글(Sputnik testsuite)과 마이크로소프트(MS)가 수천 건의 테스트를 수행했다.Test262 테스트 슈트는 2020년 [47]1월 기준으로 38014개의 테스트로 구성되었습니다.ECMAScript 사양은 주요 웹 브라우저에서 잘 지원됩니다.다음 표는 ECMAScript의 최신 에디션에 대한 소프트웨어의 현재 버전 적합률을 나타내고 있습니다.

스크립트 엔진 적합성
스크립트 엔진 레퍼런스 어플리케이션 준거[48]
ES5[49] ES6 (2015)[50] ES7 (2016)[51] 최신(2017+)[51][52]
스파이더몽키 파이어폭스 94 100% 98% 100% 100%
V8 Google Chrome 95, Microsoft Edge 95, Opera 80 100% 98% 100% 100%
자바스크립트코어 사파리 15 100% 99% 100% 90%

「 」를 참조해 주세요.

레퍼런스

  1. ^ Stefanov, Stoyan (2010). JavaScript Patterns. O'Reilly Media, Inc. p. 5. ISBN 9781449396947. Archived from the original on 2016-06-10. Retrieved 2016-01-12. The core JavaScript programming language [...] is based on the ECMAScript standard, or ES for short.
  2. ^ Wirfs-Brock, Allen; Eich, Brendan (2020-05-02). "JavaScript: The First 20 Years". Proceedings of the ACM on Programming Languages. 4: 1–189. doi:10.1145/3386327. S2CID 219603695.{{cite journal}}: CS1 유지보수: 날짜 및 연도(링크)
  3. ^ Guo, Shu-yu (2022-02-14). "ECMAScriptÂŽ 2022 Language Specification". tc39.es. Tc39.es. Archived from the original on 2020-05-08. Retrieved 2022-02-14.
  4. ^ Krill, Paul (2008-06-23). "JavaScript creator ponders past, future". infoworld.com. InfoWorld. Archived from the original on 2014-09-20. Retrieved 2013-10-31.
  5. ^ "Netscape and Sun announce JavaScript, the Open, Cross-platform Object Scripting Language for Enterprise Networks and the Internet". Netscape.com. Netscape. 1995-12-04. Archived from the original on 2002-06-06. Retrieved 2019-11-04.
  6. ^ Press Release (November 15, 1996). "Industry Leaders to Advance Standardization of Netscape's JavaScript at Standards Body Meeting". Netscape.com. Netscape. Archived from the original on 1998-12-03. Retrieved 2013-10-31.
  7. ^ Eich, Brendan (2006-10-03). "Will there be a suggested file suffix for es4?". mozilla.org. Mail.mozilla.org. Archived from the original on 2020-06-21. Retrieved 2021-05-05.
  8. ^ Maffeis, Sergio; Mitchell, John C.; Taly, Ankur (2020-01-03). "An Operational Semantics for JavaScript" (PDF). stanford.edu. Association for Computing Machinery. Archived (PDF) from the original on 2020-01-03. Retrieved 2020-01-03.
  9. ^ a b c "ECMAScript 2021 Language Specification". Ecma International. June 2021. Archived from the original on 2021-06-24. Retrieved 2021-06-26.
  10. ^ GhostarchiveWayback Machine에서 아카이브:
  11. ^ a b "ECMAScript 2015 Language Specification". Ecma International. June 2015. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  12. ^ a b c "ECMAScript 2016 Language Specification". Ecma International. June 2016. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  13. ^ a b c "ECMAScript 2017 Language Specification". Ecma International. June 2017. Archived from the original on 2021-01-17. Retrieved 2021-06-28.
  14. ^ a b c "ECMAScript 2018 Language Specification". Ecma International. June 2018. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  15. ^ a b c "ECMAScript 2019 Language Specification". Ecma International. June 2019. Archived from the original on 2022-02-14. Retrieved 2021-06-28.
  16. ^ a b c "ECMAScript 2020 Language Specification". Ecma International. June 2020. Archived from the original on 2021-01-18. Retrieved 2021-06-28.
  17. ^ 2015-03-24 회의 노트 2017-06-23 웨이백 머신에 보관.ESD 토론또한 Ecma가 철회한 2015-08-13 Wayback Machine의 표준 아카이브도 참조하십시오.ECMA
  18. ^ 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.
  19. ^ 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.
  20. ^ "Proposed ECMAScript 4th Edition – Language Overview" (PDF). ecmascript.org. 23 October 2007. Archived from the original (PDF) on 23 December 2010.
  21. ^ John Resig. "John Resig – Bug Fixes in JavaScript 2". Ejohn.org. Archived from the original on 2013-11-02. Retrieved 2013-10-31.
  22. ^ "Compatibility Between ES3 and Proposed ES4" (PDF). Ecmascript.org. Archived from the original (PDF) on 2014-07-24. Retrieved 2013-10-31.
  23. ^ "ECMAScript Language Specification" (PDF). Ecma International. 2009-04-19. Archived from the original (PDF) on 2009-04-19. Retrieved 2018-03-19.
  24. ^ "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.
  25. ^ "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.
  26. ^ "Open letter to Chris Wilson". Brendan Eich. 2007-10-31. Archived from the original on 2011-09-16. Retrieved 2013-10-31.
  27. ^ "JavaScript 2 and the Open Web". 2007-11-20. Archived from the original on 2014-02-10. Retrieved 2014-01-20.
  28. ^ "ECMAScript Harmony". Mail.mozilla.org. Archived from the original on 2013-08-26. Retrieved 2013-10-31.
  29. ^ "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.
  30. ^ "Ecma International finalises major revision of ECMAScript". Ecma International. 2009-04-09. Archived from the original on 2011-09-04. Retrieved 2009-05-22.
  31. ^ "Ecma previous news". Ecma-international.org. Archived from the original on 2020-04-16. Retrieved 2020-03-29.
  32. ^ W3schools의 JavaScript 버전
  33. ^ Krill, Paul. "It's official: ECMAScript 6 is approved". InfoWorld. Archived from the original on 2018-03-23. Retrieved 2018-03-19.
  34. ^ "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.
  35. ^ "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.
  36. ^ "ECMAScript 6: New Features: Overview and Comparison". es6-features.org. Archived from the original on 2018-03-18. Retrieved 2018-03-19.
  37. ^ "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.
  38. ^ 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.
  39. ^ "ECMAScript 2017 (ES8): the final feature set". 2ality. Archived from the original on 2018-04-23. Retrieved 2018-04-23.
  40. ^ "ES2019: optional catch binding". 2ality.com. 2017-08-13. Retrieved 26 April 2022.
  41. ^ "About". ECMAScript. Archived from the original on 2012-08-02. Retrieved 2009-12-17.
  42. ^ David Flanagan (17 August 2006). JavaScript: The Definitive Guide: The Definitive Guide. "O'Reilly Media, Inc.". p. 16. ISBN 978-0-596-55447-7. Archived from the original on 1 August 2020. Retrieved 11 November 2019.
  43. ^ Bernhardt, Gary. Wat. CodeMash 2012. Destroy All Software. Archived from the original on 2019-10-28. Retrieved 2021-08-18.
  44. ^ Gilbertson, Scott (26 January 2012). "Jokes for Nerds: Wat Moments in Programming". Wired. Archived from the original on 23 August 2020. Retrieved 22 August 2021.
  45. ^ "JavaScript data types and data structures – JavaScript MDN". Developer.mozilla.org. 2017-02-16. Archived from the original on 2017-03-14. Retrieved 2017-02-24.
  46. ^ "ECMAScript Language – test262". Test262.ecmascript.org. Archived from the original on 2011-05-14. Retrieved 2013-10-31.
  47. ^ "tc39/test262". GitHub. January 24, 2020. Archived from the original on October 1, 2019. Retrieved January 29, 2020.
  48. ^ ES5는 이 테스트 스위트의 베이스라인입니다.다른 에디션의 적합률은 새로운 기능에 대한 지원만 반영하고 종합적인 점수는 반영하지 않습니다.
  49. ^ "ECMAScript 5 compatibility table". kangax.github.io. Archived from the original on 2018-11-19. Retrieved 2018-11-08.
  50. ^ "ECMAScript 6 compatibility table". kangax.github.io. Archived from the original on 2018-11-17. Retrieved 2018-11-08.
  51. ^ a b "ECMAScript 2016+ compatibility table". kangax.github.io. Archived from the original on 2018-11-24. Retrieved 2018-11-08.
  52. ^ ES7부터 다음 에디션 초안까지의 신기능을 포함한 종합 점수

외부 링크

ISO 표준

ECMA 규격