| ver | official name | description |
|---|---|---|
| ES1 | ECMAScript 1 (1997) | First edition |
| ES2 | ECMAScript 2 (1998) | Editorial changes |
| ES3 | ECMAScript 3 (1999) | Added regular expressions Added try/catch Added switch Added do-while |
| ES4 | ECMAScript 4 | Never released |
| ES5 | ECMAScript 5 (2009) | Added "strict mode" Added JSON support Added String.trim() Added Array.isArray() Added Array iteration methods Allows trailing commas for object literals |
| ES6 | ECMAScript 2015 | Added let and const Added default parameter values Added Array.find() Added Array.findIndex() |
| ES7 | ECMAScript 2016 | Added exponential operator (**) Added Array.includes() |
| ES8 | ECMAScript 2017 | Added string padding Added Object.entries() Added Object.values() Added async functions Added shared memory Allows trailing commas for function parameters |
| ES9 | ECMAScript 2018 | Added rest / spread properties Added asynchronous iteration Added Promise.finally() Additions to RegExp |
| ES10 | ECMAScript 2019 | String.trimStart() String.trimEnd() Array.flat() Object.fromEntries Optional catch binding |
| ES11 | ECMAScript 2020 | The Nullish Coalescing Operator (??) BigInt primitive type |
| ES12 | ECMAScript 2021 | String.repalceAll() Promise.any() |
| ES13 | ECMAScript 2022 | Top-level await New class elements Static block inside classes |