new 연산자super 키워드? : ), )if 문do-while 문while 문for 문for-in, for-of, for-await-of 문continue 문break 문return 문with 문switch 문throw 문try 문debugger 문?um/p1-90`https://tc39.es/ecma262/ 문서는 가장 정확하며 최신의 ECMAScript 명세서입니다. 이 문서에는 최신 연간 스냅샷의 내용과 모든 완료된 제안들 — 제안 절차에서 Stage 4에 도달하여 여러 구현체에 적용되어 다음 연간 스냅샷에 포함될 예정인 것들 — 이 포함되어 있습니다. 과거 스냅샷은 https://ecma-international.org/publications-and-standards/standards/ecma-262/에서 확인할 수 있습니다.
이 문서는 단일 페이지 및 다중 페이지 형식으로 제공됩니다.
이 명세서는 ECMAScript 커뮤니티의 도움으로 GitHub에서 개발됩니다. 해당 명세서 개발에 기여할 수 있는 여러 방법이 있습니다:
이 문서가 어떻게 생성되는지에 관한 추가 정보는
이 Ecma 표준은 ECMAScript 2027 언어를 정의합니다. 이것은 ECMAScript 언어 명세의 열여덟 번째 판입니다. ECMAScript는 여러 기원 기술을 바탕으로 하였으며, 가장 잘 알려진 것은 JavaScript(넷스케이프)와 JScript(마이크로소프트) 입니다. 이 언어는 Brendan Eich가 넷스케이프에서 만들었으며, 넷스케이프의 Navigator 2.0 브라우저에 처음 나타났습니다. 웹 브라우저에 포함된 언어로 가장 널리 알려져 있지만, 브라우저 이외 서버 및 내장 응용프로그램 분야에서도 많이 사용되어, 세계에서 가장 널리 쓰이는 범용 프로그래밍 언어 중 하나로 성장했습니다.
ECMAScript 언어 명세의 개발은 1996년 11월에 시작되었으며, 이 Ecma 표준의 첫 번째 판은 1997년 6월 Ecma 총회에서 채택되었습니다.
해당 Ecma 표준은 패스트 트랙 절차를 거쳐 ISO/IEC JTC 1에 제출되었고, 1998년 4월 국제 표준 ISO/IEC 16262로 승인되었습니다. 1998년 6월 Ecma 총회에서 두 번째 ECMA-262 판이 ISO/IEC 16262와 완전히 일치하도록 승인되었습니다. 1판과 2판 사이의 변화는 편집적 차이입니다.
세 번째 판은 강력한 정규 표현식, 더 좋은 문자열 처리, 새로운 제어문, try/catch 예외 처리, 엄격한 오류 정의, 숫자 출력 포맷, 미래 언어 확장을 위한 소규모 변경 사항을 도입했습니다. ECMAScript 표준의 세 번째 판은 1999년 12월 Ecma 총회에서 채택되었으며, 2002년 6월 ISO/IEC 16262:2002로 발행되었습니다.
세 번째 판 이후 ECMAScript는 월드와이드웹과 결합해 모든 웹 브라우저가 지원하는 프로그래밍 언어가 되면서 엄청난 보급률을 달성했습니다. ECMAScript의 네 번째 판 개발 작업도 많았으나, 완성되지 않았고 정식 네 번째 판으로 출판되지 않았으며, 일부 내용이 여섯 번째 판에 반영되었습니다.
ECMAScript 다섯 번째 판(ECMA-262 5판으로 발행)은 브라우저 구현체 사이에서 널리 쓰이던 사실상 표준 언어 해석을 명문화하였고, 세 번째 판 발표 이후 등장한 신규 기능을 지원합니다. 여기에는 접근자 속성, 객체의 반영적 생성 및 검사, 속성의 제어, 추가 배열 조작 함수, JSON 객체 인코딩 지원, 더 강력한 오류 검사와 보안을 위한 엄격 모드가 포함됩니다. 다섯 번째 판은 2009년 12월 Ecma 총회에서 채택되었습니다.
다섯 번째 판은 패스트 트랙 절차로 ISO/IEC JTC 1에 제출되어 ISO/IEC 16262:2011로 승인되었습니다. ECMAScript 5.1 판은 소소한 수정을 포함하며, ISO/IEC 16262:2011과 동일한 본문입니다. 5.1 판은 2011년 6월 Ecma 총회에서 채택되었습니다.
여섯 번째 판의 집중 개발은 2009년, 다섯 번째 판 발표 준비와 동시에 시작되었습니다. 그러나 그에 앞서 1999년 세 번째 판 공개 이후로 여러 실험과 언어 개선 설계가 지속적으로 이루어졌습니다. 실질적으로 여섯 번째 판 완성은 15년에 걸친 노력의 결실입니다. 본 판의 목표는 대규모 애플리케이션과 라이브러리 생성 지원, 그리고 다른 언어의 컴파일 타깃으로써 ECMAScript 사용을 개선하는 것이었습니다. 주요 확장은 모듈, 클래스 선언, 렉시컬 블록 스코프, 이터레이터와 제너레이터, 비동기 프로그래밍용 프로미스, 구조 분해 패턴, 꼬리 호출 최적화 등입니다. 내장 ECMAScript 라이브러리는 맵/셋/이진 수 배열 등 데이터 추상화, 문자열과 정규 표현식용 추가 유니코드 지원 등으로 확장되었습니다. 내장 객체는 서브클래싱을 통한 확장이 가능해졌습니다. 여섯 번째 판은 지속적, 점진적 언어와 라이브러리 확장 기반을 마련합니다. 여섯 번째 판은 2015년 6월 총회에서 채택되었습니다.
ECMAScript 2016은 Ecma TC39가 연간 릴리스와
오픈 개발 프로세스를 도입한 첫 ECMAScript 판입니다.
ECMAScript 2015 원본에서 일반 텍스트 문서를 만들어
GitHub에서만 개발이 진행되었습니다. 표준 개발 1년 동안
수백 건의 풀 리퀘스트와 이슈가 제출되었고 수천 건의 버그,
편집상의 수정 등 다양한 개선이 이루어졌습니다.
또한 Ecmarkup, Ecmarkdown, Grammarkdown 등 수많은
소프트웨어 도구도 개발 지원에 사용되었습니다.
ES2016에는 새 지수 연산자와 Array.prototype의
includes 메서드 지원이 포함됐습니다.
ECMAScript 2017은 Async 함수, Shared Memory,
Atomics와 더불어 여러 소규모 언어/라이브러리 개선,
버그 수정, 편집 갱신을 도입했습니다. Async 함수는
promise 반환 함수 구문을 제공해 비동기 프로그래밍 경험을 개선했고,
Shared Memory와 Atomics는 병렬 CPU 상에서도
확정적 실행 순서를 보장하는 원자적 연산을 통한 멀티 Object.values, Object.entries, Object.getOwnPropertyDescriptors
등 새 Object 정적 메서드를 포함시켰습니다.
ECMAScript 2018은 async 이터레이터 프로토콜 및
async 제너레이터를 통한 비동기 반복 지원을 도입했습니다.
또한 정규 표현식 dotAll 플래그, 명명된 캡처 그룹, 유니코드
속성 이스케이프, 후방 탐색 어설션 등 4가지 신규 기능과
객체 잔여/전개 속성도 추가했습니다.
ECMAScript 2019는 배열 평탄화를 위한 Array.prototype.flat 및
flatMap, Object.entries 반환값을 객체로 변환하는 Object.fromEntries,
널리 구현됐으나 비표준이었던 String.prototype.trimLeft와
trimRight의 더 나은 명칭인 trimStart, trimEnd를 도입했습니다.
또한 몇 가지 구문, 의미적 소규모 수정을 포함하고 있는데,
동적 catch 바인딩 매개변수, JSON 정합을 위한 문자열 리터럴의
U+2028/U+2029 허용 등이 있습니다. 또 Array.prototype.sort를
안정 정렬로 강제, JSON.stringify의 모든 입력에 대해 올바른
UTF-8 반환, Function.prototype.toString이 원본 소스 혹은
표준 자리 표시자를 반환하도록 명확화했습니다.
ECMAScript 2020, 11판은 문자열의 모든 일치 객체 이터레이터를
생성하는 matchAll 메서드, 동적 지정자로 모듈을 비동기 임포트하는
import(), 임의 정밀도 BigInt, 단락없는 Promise.allSettled,
전역 this 접근용 globalThis, 모듈내 export * as ns from 'module' 구문,
for-in 열거 순서 표준화, 모듈 컨텍스트용 import.meta,
“nullish” 값 처리를 개선한 nullish 병합 및 옵셔널 체이닝 구문을 도입했습니다.
ECMAScript 2021, 12판은 문자열의 replaceAll, input 값이
만족되면 단락하는 Promise.any, 여러 오류를 한 번에 표현하는
AggregateError, 논리 대입 연산자(??=, &&=, ||=), 객체를 참조하나
가비지 컬렉션을 막지 않는 WeakRef, 대상 객체의 정리 작업 관리를 위한
FinalizationRegistry, 숫자 구분 기호(1_000), 그리고
ECMAScript 2022, 13판은 모듈 최상위 await,
클래스 내 공개/비공개 인스턴스 필드, 공개/비공개 정적 필드,
비공개 인스턴스 메서드와 접근자, 비공개 정적 메서드와 접근자,
정적 블록, 객체의 비공개 필드 존재 확인(#x in obj),
/d 플래그로 정규식 매칭 인덱스 제공, 에러의 cause 속성,
문자열/배열/at 메서드,
Object.hasOwn을 도입했습니다.
ECMAScript 2023, 14판은 Array.prototype, TypedArray.prototype의
toSorted, toReversed, with, findLast, findLastIndex 및
Array.prototype.toSpliced를 추가하고, 파일 앞부분 #! 주석 지원,
약한 콜렉션에서 대부분의 Symbol을 키로 허용하도록 했습니다.
ECMAScript 2024, 15판은 ArrayBuffer와 SharedArrayBuffer의 리사이즈/전송 기능,
문자열 집합 작업을 위한 새로운 /v 정규식 플래그,
Promise 생성을 위한 편의 메서드 Promise.withResolvers, 데이터 집계용
Object.groupBy, Map.groupBy, 공유 메모리 변동 비동기 대기
Atomics.waitAsync, 문자열의 정상 유니코드 확인/보장용
String.prototype.isWellFormed, toWellFormed를 도입했습니다.
ECMAScript 2025, 16판은 이터레이터 연산용 새 글로벌 Iterator와
관련 메서드, Set 연산용 Set.prototype 메서드, JSON 모듈 임포트 지원,
가져온 모듈의 속성 선언, 정규식 안전 이스케이프용 RegExp.escape 메서드,
정규식 내 인라인 플래그 설정/해제, 항상 Promise로 결과를 보장하는
Promise.try, 새 Float16Array 및 관련
DataView.prototype.getFloat16, setFloat16, Math.f16round를 도입했습니다.
ECMAScript 2026, 17판은 다양한 크기의 숫자 합산
정밀 손실 최소화를 위한 Math.sumPrecise, 이터레이터 연결
Iterator.concat, 비동기 반복원/소스에서 배열을 만드는 Array.fromAsync,
오류 객체 식별용 Error.isError, Map.prototype, WeakMap.prototype의
조회 시 기본값 제공, Uint8Array의 16진수·base64 인코딩 변환,
JSON.parse reviver에서 소스 세그먼트 접근 가능, 원시값의
JSON.stringify 결과 조절용 JSON.rawJSON 등을 도입했습니다.
많은 조직을 대표하는 수십 명이 Ecma TC39 표준의 이 판과 이전 판 개발에 중요한 기여를 했습니다. 활발한 커뮤니티도 TC39 ECMAScript 활동을 뒷받침합니다. 이 커뮤니티는 여러 초안을 검토하고, 수천 건 버그를 보고하고, 구현 실험, 테스트스위트 기여, 전세계 개발자에게 ECMAScript 교육을 해왔습니다. 모든 기여자와 단체를 하나하나 밝히고 인정하는 것은 현실적으로 어렵습니다.
Allen Wirfs-Brock
ECMA-262, 프로젝트 에디터, 6판
Brian Terlson
ECMA-262, 프로젝트 에디터, 7판~10판
Jordan Harband
ECMA-262, 프로젝트 에디터, 10판~12판
Kevin Gibbons
ECMA-262, 프로젝트 에디터, 12판~17판
Shu-yu Guo
ECMA-262, 프로젝트 에디터, 12판~18판
Michael Ficarra
ECMA-262, 프로젝트 에디터, 12판~18판
Richard Gibson
ECMA-262, 프로젝트 에디터, 18판
Ron Buckton
ECMA-262, 프로젝트 에디터, 18판
Nicolò Ribaudo
ECMA-262, 프로젝트 에디터, 18판
Linus Groh
ECMA-262, 프로젝트 에디터, 18판