ES6++: 1-Introduction
Tags: javascript, es6, esnext
Published: 2022-11-16 05:53:12

---
title: ES6++: 1-Introduction
published: true
description: 
series: es6++
tags: javascript, es6, esnext
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjenhp1l02hbs22ooper.png
# Use a ratio of 100:42 for best results.
# published_at: 2022-10-25 09:51 +0000
---

## Introduction

This series of articles will cover all features of javascript ES6 and above, we will start from es6 features and go all the way to the latest features of javascript.

## What is ECMAScript?

ECMAScript is a scripting language specification standardized by Ecma International in `ECMA-262` and `ISO/IEC` 16262. It was created to standardize JavaScript, so as to foster multiple independent implementations. JavaScript has remained the best-known implementation of ECMAScript since the standard was first published, with other well-known implementations including `JScript` and `ActionScript`.

So `ES` stands for `ECMAScript` and the number after it is the version of the `ECMAScript` standard.

## About versions

Before we getting started i want to say something about versions, i really suffered from getting know the features of each version, as there are conflicts in many websites about features of each version, i really don't know why and i can't find an official source for that, so i will try to make it clear here.

> If you see any conflict in this article please let me know in the comments.

## What is ES6?

ES6 is the `6th` version of `ECMAScript`, it was released in `2015` and it is the first version of ECMAScript that is widely supported by all browsers and nodejs.

You can say that `ES6` is the real next generation of **Javascript** since it was invented in `1995`.

## ES6 Features

Here are the main features of `ES6`:

* `let` and `const` keywords
* `Arrow functions`
* `Classes`
* `Modules`
* `Template literals`
* `Destructuring`
* `Default parameters`
* `Rest parameters`
* `Spread operator`
* `Object literal enhancements`
* `Array enhancements`
* `Map and Set`
* `Promises`
* `Generators`
* `Symbols`
* `Iterators and for...of loop`
* `Meta Programming`
  * `Proxies`
  * `Reflect`
* `Binary and Octal literals`
* `Unicode string and RegExp literals`
* `New methods`
* `Typed Arrays`

We'll cover each point in a separate article so you can get a better understanding of each feature, and we'll cover it with plenty of examples as well.

## ES7 Version

`ES7` was released in `2016` and it added a few new features to `ES6`, let's see what they are:

## ES7 Features

Here are the main features of `ES7`:

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

## ES8 Version

`ES8` was released in `2017` and it added a few new features to `ES7`, let's see what they are:

## ES8 Features

Here are the main features of `ES8`:

* `Async functions`
* `Object.values()`
* `Object.entries()`
* `Trailing commas in function parameter lists and calls`
* `String.prototype.padStart()`
* `String.prototype.padEnd()`
* `Shared memory and atomics`
* `Object.getOwnPropertyDescriptors()`

## ES9 Version

`ES9` was released in `2018` and it added a few new features to `ES8`, let's see what they are:

## ES9 Features

Here are the main features of `ES9`:

* `Rest/Spread Properties`
* `Promise.prototype.finally()`
* `Asynchronous Iteration`
* `Regexp Lookbehind Assertions`
* `Regexp Unicode Property Escapes`
* `Lifting Template Literal Restriction`
* `Symbol.prototype.description`

## ES10 Version

`ES10` was released in `2019` and it added a few new features to `ES9`, let's see what they are:

## ES10 Features

Here are the main features of `ES10`:

* `Object.fromEntries()`
* `String.prototype.trimStart()`
* `String.prototype.trimEnd()`
* `Array.prototype.flat()`
* `Array.prototype.flatMap()`
* `Optional Catch Binding`
* `Function.prototype.toString()`
* `Array.prototype.sort() stability`

## ES11 Version

`ES11` was released in `2020` and it added a few new features to `ES10`, let's see what they are:

## ES11 Features

Here are the main features of `ES11`:

* `Optional Chaining`
* `Nullish Coalescing`
* `BigInt`
* `Dynamic Import()`
* `Promise.allSettled()`
* `globalThis`
* `String.prototype.matchAll()`
* `Module namespace exports`
* `import.meta`

## ES12 Version

`ES12` was released in `2021` and it added a few new features to `ES11`, let's see what they are:

## ES12 Features

Here are the main features of `ES12`:

* `Class fields`
* `Private methods and accessors`
* `Static class fields and private static methods`
* `Top-level await`
* `Promise.any()`
* `AggregateError`
* `WeakRefs`
* `String.prototype.replaceAll()`
* `Numeric separators`
* `Logical assignment operators`
* `FinalizationRegistry`

## ESNext

You might read that term in some compiler/transpiler the `ESNext` version, `ESNext` is the next version of `ECMAScript` that will be released in the future, it is not released yet but we can already use some of its features in our code.

## What's next

What we'll do in our next articles, that we'll explain the features grouped by the feature category itself not version as versions really doesn't matter in this case, for example when we talk about `Promises` we'll cover all versions of `Promises` not just `ES6` version.

## ☕♨️ Buy me a Coffee ♨️☕

If you like my articles and work, you can [buy me a coffee](https://www.paypal.com/paypalme/hassanzohdy), it will help me to keep going and keep creating more content.

## 😍 Join our community

Join our community on [Discord](https://discord.gg/pb2vmdfhGf) to get help and support (Node Js 2023 Channel).

## 📚 Bonus Content 📚

You may have a look at these articles, it will definitely boost your knowledge and productivity.

General Topics

* [Event Driven Architecture: A Practical Guide in Javascript](https://dev.to/hassanzohdy/event-driven-architecture-the-best-paradigm-that-i-love-to-work-with-in-javascript-and-node-js-1gnk)
* [Best Practices For Case Styles: Camel, Pascal, Snake, and Kebab Case In Node And Javascript](https://dev.to/hassanzohdy/best-practices-for-case-styles-camel-pascal-snake-and-kebab-case-in-node-and-javascript-55oi)
* [After 6 years of practicing MongoDB, Here are my thoughts on MongoDB vs MySQL
](https://dev.to/hassanzohdy/after-6-years-of-practicing-mongodb-here-are-my-thoughts-on-mongodb-vs-mysql-574b)

Packages & Libraries

* [Collections: Your ultimate Javascript Arrays Manager](https://dev.to/hassanzohdy/collections-your-ultimate-javascript-array-handler-3o15)
* [Supportive Is: an elegant utility to check types of values in JavaScript](https://dev.to/hassanzohdy/supportive-is-an-elegant-utility-to-check-types-of-values-in-javascript-1b3e)
* [Localization: An agnostic i18n package to manage localization in your project](https://dev.to/hassanzohdy/mongez-localization-the-simplest-way-to-translate-your-website-regardless-your-favorite-framework-4gi3)

 React Js Packages

* [useFetcher: easiest way to fetch data in React Js](https://dev.to/hassanzohdy/usefetcher-the-easiest-way-to-fetch-data-in-react-45o9)

Courses (Articles)

* [Node Js 2023 Course: Node With Typescript, The Ultimate Guide](https://dev.to/hassanzohdy/nodejs-course-2023-introduction-to-nodejs-3n4e)
* [React Js: Let"s Create File Manager With React Js and Node Js](https://dev.to/hassanzohdy/lets-create-a-file-manager-from-scratch-with-react-and-typescript-chapter-i-a-good-way-to-expand-your-experience-5g4k)