ECMAScript
lastmod 2025-02-11created 2016-04-0814 edits
ECMAScript is a standardized scripting programming language defined by Ecma International in the ECMA-262 technical specification. The language is widely used on the web and is often thought of as JavaScript or JScript, but the terms differ in meaning in specific ways. To understand the relationship between ECMAScript, JavaScript, and JScript, you need to know the history of ECMAScript.
Versions
Ten editions of ECMA-262 have been published. Work on the 10th edition of the standard was finalized in June 2019.
| Edition | Publication date | Name | Changes from the previous edition |
| 1 | June 1997 | First edition | |
| 2 | June 1998 | Changes to keep the specification fully aligned with the ISO/IEC 16262 international standard. | |
| 3 | December 1999 | Powerful regular expressions, better string handling, new control statements , try/catch exception handling, tighter definition of errors, formatting for numeric output, etc. | |
| 4 | Abandoned | The 4th edition was abandoned due to political differences over the language. Some of the work on this edition became the basis of the 5th edition, and other parts form the basis of ECMAScript. | |
| 5 | December 2009 | Adds "strict mode", a subset that provides more thorough error checking and avoids error-prone constructs. Clarifies many ambiguities in the 3rd edition specification.1 | |
| 5.1 | June 2011 | Edition 5.1 of the ECMAScript standard is aligned with the third edition of the ISO/IEC 16262:2011 international standard. | |
| 6 | June 2015 | ECMAScript 2015 (ES2015) | The 6th edition adds new syntax for writing complex applications, such as classes and modules. However, the semantics of this syntax are defined in the same way as the 5th edition's strict mode. This edition is also called "ECMAScript Harmony" or "ES6 Harmony". |
| 7 | June 2016 | ECMAScript 2016 (ES2016) | Exponentiation operator added, Array.prototype.includes |
| 8 | June 2017 | ECMAScript 2017 (ES2017) | Trailing commas allowed in function expression arguments, Object values/entries methods, async/await, etc. |
| 9 | June 2018 | ECMAScript 2018 (ES2018) | Promise.finally, Async iteration, object rest/spread property, etc. |
| 10 | June 2019 | ECMAScript 2019 (ES2019) | Object.fromEntries, flat, flatMap, Symbol.description, optional catch, etc. |
4th Edition (abandoned)
5th Edition
6th Edition – ECMAScript 2015
7th Edition – ECMAScript 2016
In ES2016, the <coede>await</code> keyword for asynchronous programming was designated as a "Future Reserved Word".2 (i.e., not yet implemented)
8th Edition – ECMAScript 2017
9th Edition – ECMAScript 2018
10th Edition – ECMAScript 2019
11th Edition – ECMAScript 2020
- Nullish Coalescing Operator
- e.g.
a ?? b
- Optional Chaining
- e.g.
foo.a?.b
12th Edition – ECMAScript 2021
- Logical assignment operators
- e.g.
obj.prop ??= foo();
- Numeric separators
- e.g.
10_000_000_000
See also
Favorite site
- Wikipedia (en) ECMAScript
- Toast - Start ES6 right now
- (Jaalsseu) ECMASCript? ES?
- 19 ES6 shorthand coding techniques