ES6(2015)부터 ES2023까지, 버전별로 추가된 주요 기능을 정리했다.

ECMAScript(ECMA-262) 는 Javascript 명세 또는 스펙을 의미한다.

ECMA-262 : ECMA인터내셔널(표준기구)은 ECMAScript 언어의 공식 사양인 ECMA-262 표준을 만들었다.

즉, ECMAScript는 자바스크립트의 표준이며 뼈대(core)를 구성하는 스크립트 언어다.

자바스크립트는 ECMAScript 명세 또는 스펙을 따르는 스크립트 언어라고 할 수 있다.


ECMAScript 6 (2015)

ES6에는 다음과 같은 새로운 기능이 추가 되었다.

  • arrows (화살표 함수)

  • classes (클래스)

  • enhanced object literals (object 메소드 선언 및 속성(동적) 선언)

  • template strings (템플릿 문자열)

  • destructuring (구조분해할당)

  • default + rest + spread (default 파라미터, rest 파라미터, 전개연산자)

  • let + const (let, const block level 스코프 변수선언)

  • iterators + for..of

  • generators

  • unicode

  • modules

  • module loaders

  • map + set + weakmap + weakset

  • proxies

  • symbols

  • subclassable built-ins

  • promises (비동기 프로그래밍)

  • math + number + string + array + object APIs

  • binary and octal literals

  • reflect api

  • tail calls (꼬리 물기 최적화)


ECMAScript 7 (2016)

  • Array.prototype.includes()

  • 지수 연산자(**)


ECMAScript 8 (2017)

  • Async Functions (async ~ await)

  • Shared memory and atomics (공유된 메모리와 원자 / SharedArrayBuffer 객체와 Atomics 객체를 사용한 메모리 공유)


ECMAScript 9 (2018)

  • Asynchronous Iteration (비동기 반복 / for-await-of)

  • Rest/Spread Properties (전개연산 및 rest 파라미터 -> 배열로 변경)


ECMAScript 10 (2019)

  • Array. Flat () and Array flatMap ()

  • Object.fromEntries()

  • String.prototype.trimStart(), String.prototype.trimEnd()

  • Optional Catch

  • Function.prototype.toString()

  • Symbol.prototype.description


ECMAScript 11 (2020)

  • BigInt

  • Dynamic import

  • Optional chaining (?.)

  • import.meta

  • globalThis

  • String.prototype.matchAll() (지정된 정규식에 대해 문자열과 일치하는 모든 결과의 iterator를 반환)

  • Null coalescing operator (null 병합 연산자)


ECMAScript 12 (2021)

  • String.prototype.replaceAll()

  • Promise.any() (promise 중 하나라도 성공하면 실행을 완료)

  • Logical operators and assignment expressions (논리 연산자와 할당 표현식을 결합)

  • WeakRefs

  • Numeric separators (숫자 구분 기호 _)


ECMAScript 13 (2022)

  • Class: private, static

  • Top-Level await

  • Error.cause

  • .at() (배열의 음수 인덱스 접근)

  • Object.hasOwn()


ECMAScript 14 (2023)

  • Change Array by Copy (새로 복사된 배열을 반환/ toReversed(), toSorted(), toSpliced())

  • Array.prototype.findLast() , Array.prototype.findLastIndex()

  • Symbols as WeakMap keys


참고 자료