Skip to content

JavaScript Tutorial Getting Started

JavaScript Versions: ES5, ES6 and Modern JavaScript

Lesson 3 of 258 2 min read By Deepak Paswan Updated Oct 4, 2026

JavaScript has been changing for decades. These are the names you will meet, and what they mean.

A short timeline

NameYearWhat it means
ES52009The long-lived baseline. Old code you will see online is often written in this style.
ES6 / ES20152015The big update: let, const, arrow functions, classes, modules, promises, template literals and more.
ES2016 and laterevery JuneOne small edition each year, adding a few features at a time.
ECMAScript 2026June 2026The 17th edition of the standard (ECMA-262), the latest published one.

Two naming styles exist for the same editions: ES6 is the same as ES2015, ES7 is ES2016, and so on. After ES6 the committee switched to year names because new editions became small and regular.

What “modern JavaScript” means

There is no official version called “modern JavaScript”. People use it to mean JavaScript written with the features added from ES2015 onward: const and let, arrow functions, template literals, destructuring, modules, async and await, optional chaining and so on. ES6 was not the end of the story. It is where modern JavaScript started.

You do not need to memorise years

Most developers never say “this is an ES2021 feature”. They check whether it works for their users. Before relying on a newer feature:

  1. Look it up on MDN Web Docs, which has a Browser compatibility table on every page.
  2. Or check Can I use.
  3. Decide if your audience’s browsers support it. If not, you can use a polyfill (code that adds the missing feature) or a build tool that rewrites newer syntax into older syntax.

How this course handles new features

The lessons teach features that are stable and useful. When something is recent and browser support may still vary, the lesson says so and shows a safe way to check. Proposals that are not part of the standard yet are not taught as if they were.

script.js
JS
// Feature detection: ask whether something exists before using it
if (typeof Object.groupBy === "function") {
  console.log("Object.groupBy is available here");
} else {
  console.log("Object.groupBy is not available here");
}
lightbulb
Reading old code
If you meet var, function everywhere and no arrow functions, you are probably reading ES5-style code. It still works. You will learn why newer code prefers let and const in var, let and const.