Skip to main content

ECMAScript History

ECMAScript 2024

  • New features to be announced

ECMAScript 2023

  • Array find from last
  • Change Array by copy
  • Hashbang grammar
  • Import assertions

ECMAScript 2022

  • Class fields
  • Private methods and accessors
  • Top-level await
  • RegExp match indices

ECMAScript 2021

  • Logical assignment operators
  • Numeric separators
  • String.prototype.replaceAll
  • Promise.any
  • WeakRefs and FinalizationRegistry

ECMAScript 2020

  • BigInt
  • Dynamic import
  • Nullish coalescing operator (??)
  • Optional chaining (?.)
  • Promise.allSettled
  • globalThis

ECMAScript 2019

  • Array.prototype.{flat, flatMap}
  • Object.fromEntries
  • String.prototype.{trimStart, trimEnd}
  • Symbol.prototype.description
  • Optional catch binding
  • Function.prototype.toString revision

ECMAScript 2018

  • Asynchronous iteration (for-await-of)
  • Promise.prototype.finally
  • Rest/Spread properties
  • RegExp improvements (s (dotAll) flag, named capture groups, lookbehind assertions, Unicode property escapes)

ECMAScript 2017

  • Async functions (async/await)
  • Shared memory and atomics
  • Object.values/Object.entries
  • String padding (padStart/padEnd)
  • Object.getOwnPropertyDescriptors
  • Trailing commas in function parameter lists and calls

ECMAScript 2016

  • Exponentiation operator (**)
  • Array.prototype.includes

ECMAScript 2015

  • Classes
  • Modules (import/export)
  • Arrow functions
  • Let and const
  • Promises
  • Template literals
  • Default parameters
  • Destructuring assignment
  • Rest parameters
  • Spread operator
  • Map, Set, WeakMap, WeakSet
  • Symbols
  • New built-in methods (Array.from, Array.of, Object.assign, etc.)

[↑] Back to top