The Development Of JavaScript Through Time

You can access the original article from this page.

Published in
3 min readMay 9, 2023


1.1 Beginning

JS Historical Development is separated into two sections.

  • First, there was the **Browser Era, when JavaScript attempted to exist within browsers.
  • Second: The ES6,ES7,ES8,ES9,ES10,ES11,ES12 periods following EcmaScript 5, when JavaScript was possible to operate outside of browsers with Node.JS and on servers and desktops.

1.2 The Browsers Era

Brenden Eich: is the creator of the JavaScript programming language. He developed it in 1995 while working for Netscape, which is now Mozilla. Over time, his name was changed to Mocha LiveScript JavaScript.

Doug Crockford: JSON (JavaScript Object Notation) was created in 2002. This format, which is a subset of XML, serves as the foundation for both directly supporting JavaScript in the language and interacting with the server.

Jesse James Garrett: defined Ajax in a 2005 paper. The web application’s underlying communication technique was async communication with the server.

John Resig: In 2006, he created the JQuery library. These were libraries that provided developers with an abstraction that eliminated any browser incompatibilities, as popularized by libraries like Prototype, Dojo, and Mootools.

HTML5: Flash is coming to an end. Another breakthrough for JavaScript occurred when technology developers such as Steve Jobs and Mark Zuckerberg stated that they would not support Flash devices in browsers and that the future was in HTML5, CSS3, and JavaScript.

With the start of this trend, all plugins that worked in browsers vanished. Java’s Applet and JavaFX, Adobe Flash, and Microsoft Silverlight have all but vanished.

1.3. ES Period (ES5, ES6, ES7, ES8, ES9, ES10, ES11, ES12)

NodeJS was created in 2009 by Ryan Dahl. This infrastructure, which was constructed by forking Chrome’s JavaScript compiler, enables JS to run as a server, that is, outside of the browser. And from then on, JS began to run everywhere. It began to appear everywhere, no longer fitting into the browser that brought it into existence, and the committee began to grow indefinitely. The requirements began to diverge. With this distinction, the language began to be remade in an evolutionary manner.

EcmaScript (ES): The underlying standard for JavaScript. Since its inception as a browser-based language, this standard has incorporated Flash’s ActionScript and Microsoft’s JScript. But eventually the best features of other languages were incorporated into JavaScript, and they vanished.

TC39: The ES Development committee is made up of several members from browser developers and large Web-related companies.

Version: Every year, generally in June, a new edition of ES is published, and each year is designated by doubling the previous year’s number. For example, language features announced in 2015 are referred to as ES6, language features published in 2016 are referred to as ES7, and language features deployed in 2019 are referred to as ES10. The JS language changes published in 2015, ES6, were extremely different and advanced the language.

I’ve included the developments in the JS language based on EcmaScript versions below;

1.3.1 ES6 (2015)

  • let and const
  • Arrow Functions
  • Classes
  • Default Parameters
  • Template Literals
  • Destructing Assignments
  • Enhanced Object Literals
  • For-of Loop
  • Promises
  • Spread operator
  • Set/Map
  • Generators

1.3.2 ES7 (2016)

  • Array.prototype.includes
  • Exponentiation operator (**)
  • Array.prototype.find and Array.prototype.findIndex
  • Object.getOwnPropertyDescriptors

1.3.3 ES8 (2017)

  • String padding
  • Object (values,entries)
  • Async Functions
  • Shared Memory And Atomics

1.3.4 ES9 (2018)

  • Async Iteration
  • Rest/Spread
  • Promise.prototype.finally
  • Regular Expression Improvements

1.3.5 ES10 (2019)

  • Array (flat, flatMap)
  • Object (fromEntries)
  • Optional catch binding
  • String (trimStart, trimEnd)
  • Symbol (description)
  • stable Array (sort)
  • Well-formed JSON (stringify)
  • Static Field

1.3.6. ES11 (2020)

  • BigInt
  • Dynamic import
  • Nullish Coalescing
  • Optional Chaining
  • Promise.allSettled
  • String#matchAll
  • globalThis
  • Module Namespace Exports
  • Well defined for-in order
  • import.meta
  • private fields(#)

1.3.7 ES12 (2021)

  • Numeric Separators
  • String.prototype.replaceAll
  • Promise.any() and AggregateError
  • Logical Assignment Operators
  • Private Class Methods and Accessors

1.3.7 ES13 (2022)

  • Await operator at the top-level
  • Class field declarations
  • Private methods and fields
  • Static class fields and private static methods
  • RegExp Match Indices
  • Ergonomic brand checks for private fields
  • .at() function for Indexing
  • Temporal function

To understand more about the sorts of example applications I stated above, you may download and read the ebook pdf