ECMAScript = ES
ECMA stands for European Computer Manufacturer’s Association
ES2016 included support for a new exponentiation operator and adds a new method to Array.prototype called includes. CMAScript 2017 introduced Async Functions, Shared Memory, and Atomics along with smaller language and library enhancements, bug fixes, and editorial updates. Async functions improve the asynchronous programming experience by providing syntax for promise-returning functions.
ECMAScript 2018 introduced support for asynchronous iteration via the AsyncIterator protocol and async generators. It also included four new regular expression features: the dotAll flag, named capture groups, Unicode property escapes, and look-behind assertions. Lastly it included rest parameter and spread operator support for object properties.
The 10th edition introduces a few new built-in functions: flat and flatMap on Array.prototype for flattening arrays, Object.fromEntries for directly turning the return value of Object.entries into a new Object, and trimStart and trimEnd on String.prototype as better-named alternatives to the widely implemented but non-standard String.prototype.trimLeft and trimRight built-ins.
Great Features in EcmaScript 6 and later on
1. Classes: ES6 introduces language support for classes (class keyword), constructors (constructor keyword), and the extend keyword for inheritance.
2. Arrow Functions: Arrow functions provide two features: lexical scoping of the this keyword and less ceremony when defining an anonymous function. Without arrow functions, every function defines a this value.
3. Modules: Modules in ES6 provide a way to load and manage dependencies via the new import and export keywords.
4. Block Scoping: In ES6, you can use the new let keyword to achieve block scoping.
5. Promises: Promises provide a mechanism to handle the results and errors from asynchronous operations as well as improved readability via method chaining and succinct error handling.