The JavaScript Evolution — ES1 (1995) to ES12 (2021)

Nirmal Joshi
4 min readOct 28, 2021
History of JavaScript

Today, JavaScript is used literally everywhere — from websites to web-serves to games and even AI uses JS for running their logic. You might know what JS is today but do you know how it started, and how much it has changed since its beginning?

It all began in 1995…

The first iteration of JavaScript was actually not called JavaScript at all.

This language was created to be a higher-level language for designers and non-programmers alike.

Then it was shipped with Netscape Navigator 2.0, its production name became LiveScript, and then in later versions, JavaScript.

Now you might have heard about ECMAScript and its various versions. What are they?

In 1996, to try to standardize JavaScript, Netscape and Sun Microsystems went to Ecma International (European Computer Manufacturers Association) to propose JavaScript as the standardized language for the web. In 1997, Ecma released ECMAScript 1.0, which is what is now generally referred to as JavaScript.

So for your better understanding -

  • The term JavaScript refers to the language and its implementations.
  • The term ECMAScript refers to the language standard and language versions.

Since then ECMAScript has come up with a lot of versions, each new version better than the previous one of course!

But we’re not talking in detail about all of them. Why so?

Well to be honest, from ECMAScript 1 to ECMAScript 5.1, we saw small updates and addition of minor features; except ES3 which was released in 1999 and introduced regular expressions, better string handling, new control statements, try/catch exception handling, tighter definition of errors and minor changes in anticipation of future language growth.

Check out my bestselling and highest rated Udemy course —
JavaScript — Marathon Interview Questions Series

ES6: JavaScript gets a makeover( the official name for ES6 is ES2015)

This is where it becomes more interesting…

While JavaScript was still growing, it had lots of problems and oddly functioning syntax. ES6 was the attempt to fix those problems while maintaining backward compatibility. Let’s see what are the major developments since then:

  • Now, ES6 was released in 2015 and is the first major upgrade to JS since 1997 - it included many new things such as modules, class declarations, lexical block scoping, iterators and generators, promises for asynchronous programming, destructuring patterns, and proper tail calls.

Well, it took many years for most browsers to support everything (and in-between transpilers were a great help which is still there to accommodate the latest updates of ES inside the browser), so eventually, everything got sorted out.

  • ES7 was finalized in 2016 - Its features support for a new exponentiation operator (For e.g., 2 ** 3) and the Array.prototype.includes function, popularly known as includes.
  • ES8 was released in 2017 with features such as async/await constructions which use generators and promises, Object.values(), Object.entries() and Object.getOwnPropertyDescriptors() functions for easy manipulation of Objects, and additional features for shared memory and atomics.
  • ES9 was once again finalized in 2018 with some pretty cool new features such as the support for asynchronous iteration via the AsyncIterator protocol and async generators, object rest and spread properties, and additions to regular expressions.
  • ES10 was published in 2019 & got updates such as a few new built-in functions like Array.prototype.flat(), Array.prototype.flatMap() for flattening arrays. In addition, it included a few minor updates to syntax and semantics.
  • ES11 was published last year in 2020 and had a few new functions added but the 2 most loved additions are the bigInt and the globalThis object.
  • This year we saw a newer version ES12 which introduced the replaceAll() method for strings; Promise.any(), AggregateError, logical assignment operators (??=, &&=, ||=); WeakRef, and a lot more…

We can say that to this day ES6 is the only major update that has happened.

The good thing is that new versions are always completely backward compatible, but there may occasionally be minor, hardly noticeable clean-ups.

And the best part — Old features aren’t removed or fixed. Instead, better versions of them are introduced. The best example for that is declaring variables via let — which is an improved version of var.

About me:

Founder and CEO of an IT company in India, I have more than 24 years experience of in dealing with people, processes, and codes. I started online training for my students when it was not in fashion and have trained more than 1000 students/working professionals personally which has helped them to secure awesome jobs or even start their own business.

I am also been an active corporate trainer for several years now and have been consulting with top Fortune 500/1000 companies to streamline their development projects efficiently. My goal is to share knowledge with a primary focus on advanced tools & techniques, projects, and standard programming practices to help my students understand the basics and fundamentals and make awesome technological implementations.

Looking for remote/contract Web/UI/Full stack opportunities in the US? Connect with the leading staffing experts of the industry today.



Nirmal Joshi

A founder and CEO of an IT company in India, I have more than 22+ years’ experience of dealing with people, processes and codes.