JavaScript versions: How JavaScript has changed over the years

Learn about the evolution of JavaScript over the years.

From powering simple web animations to driving complex web applications, JavaScript has transformed the web as we know it. But it wasn’t always this powerful. Let’s journey through JavaScript’s history, exploring how it evolved from a simple scripting language into the backbone of modern web development.

Brendan Eich invented JavaScript, which became an ECMA standard in 1997. ECMAScript is the official language name. Major ECMAScript versions include ES1, ES2, ES3, ES5, and ES6.

JavaScript beginnings

Initially named Mocha, then briefly LiveScriptJavaScript emerged in 1995 as a tool for adding dynamic elements to static web pages. In collaboration with Sun Microsystems, Netscape officially released JavaScript with Navigator 2.0, marking the beginning of a new era for the web.

Netscape pioneered this scripting language by collaborating with Sun Microsystems to develop JavaScript. As Netscape dominated the browser market, competitors sought alternatives to keep up with their success.For legal reasons, Microsoft introduced its version of JavaScript, JScript, to increase user interaction and enhance website experiences. While Netscape initially led the browser wars, Microsoft’s Internet Explorer gained traction due to JScript. This led to a divided ecosystem and challenges in standardizing the language.JavaScript gained popularity because it resembled Java syntax. As Java grew in popularity, JavaScript also became more widely adopted.Note: Despite their names, Java and JavaScript are fundamentally different. Java is a compiled language that runs on a Virtual Machine or browser, while JavaScript is a lightweight, interpreted scripting language primarily used for dynamic behavior in browsers and environments like Node.js.

JavaScript versions and ECMAScript

ECMAScript is the standardized specification that underpins JavaScript and similar scripting languages. It defines core language features, syntax, and semantics to ensure consistency across different implementations and platforms.The intense rivalry between Netscape and Microsoft largely drove the creation of ECMAScript. As Netscape’s JavaScript and Microsoft’s JScript began to diverge in functionality and behavior, ECMA International stepped in to standardize these approaches, ensuring compatibility and consistency across web browsers and laying the groundwork for a more unified web environment.JavaScript’s evolution is closely tied to the ECMAScript specification. In 1997, Netscape Communicator submitted key documents to ECMA International, which then used both Netscape’s JavaScript and Microsoft’s JScript to create the ECMAScript standard. The following summary outlines the major ECMAScript versions, each marking significant milestones in the development of modern JavaScript.Below is a summary of the major ECMAScript versions:

Version

Official Name

Description

ES1

ECMAScript 1 (1997)

First edition

ES2

ECMAScript 2 (1998)

Editorial changes

ES3

ECMAScript 3 (1999)

Added regular expression, strict equality (===), try-catch

ES4

ECMAScript 4

Not released

ES5

ECMAScript 5 (2009)

Added “strict mode,” JSON support, array methods like .map() and .filter()Object.createString.trim()String.charAt()Array.isArray(), trailing commas in object literals no longer cause syntax errors

ES6

ECMAScript 2015

Class declarations, ES6 modules, letconst, iterators, for...of, generators, arrow functions, maps, sets, WeakMap, promises, template literals, binary data, typed arrays, reflection, proxies, math enhancements, and new collections

ES2016

ECMAScript 2016

Exponentiation operator (**), Array.prototype.includes, async/await for asynchronous programming

ES2017

ECMAScript 2017

Object.valuesObject.entriesObject.getOwnPropertyDescriptorsString.prototype.padStart(), async/await refinements

ES2018

ECMAScript 2018

Spread/rest (...) operators for object literals, asynchronous iteration, Promise.prototype.finally, RegExp enhancements

ES2019

ECMAScript 2019

Enhanced with features such as Array.prototype.flatArray.prototype.flatMap, stable Array.sortObject.fromEntries, optional catch binding

ES2020

ECMAScript 2020

Introduced BigInt type, nullish coalescing (??), globalThis, optional chaining (?.)

ES2021

ECMAScript 2021

Introduced the replaceAll for strings, Promise.anyAggregateError, logical assignment operators, WeakRef, FinalizationRegistry, numeric separators (1_000), more precise Array.prototype.sort

ES2022

ECMAScript 2022

Introduced top-level await, new class elements (private/public fields and methods), static blocks, regex match indexes (/d), Error.causeat method for strings/arrays, Object.hasOwn

ES2023

ECMAScript 2023

Introduced Array and TypedArray methods (toSortedtoReversedwithfindLastfindLastIndextoSpliced), #! shebang support, most Symbol usage as keys in weak collections

ES2024

ECMAScript 2024

Introduced Object.groupByMap.groupByPromise.withResolvers, set operations on Set.prototype/v Unicode flag for regular expressions

ES2025

ECMAScript 2025

Future proposals and features are yet to be finalized

JavaScript’s continuous development ensures developers are equipped with powerful tools and features to meet modern programming needs.

ES.Next: Next-generation ECMAScript features

ES.Next is a dynamic term referring to the upcoming version of ECMAScript at the time of discussion. It includes features that have reached Stage 4 (finished proposals) and are part of the latest draft specification. Although these features are not yet part of a ratified specification, they are effectively considered standard due to the “living spec” model followed by TC39.

Upcoming features like Promise.try, JSON modules, and new Set methods demonstrate JavaScript’s commitment to aligning with modern development needs.

What’s next for JavaScript?

JavaScript continues to evolve with yearly updates to its standardization, ensuring it remains relevant and powerful for modern web development. With the release of ES2024, the language has introduced features that simplify coding, improve performance, and enhance developer experience. Looking ahead, ES.Next promises even more exciting additions, like Promise.try, JSON Modules, and advanced Set methods, showcasing JavaScript’s adaptability to the ever-changing software development landscape.

Staying current with JavaScript’s evolution isn’t just about learning new syntax—it’s about adopting better ways to build faster, more efficient applications. As new features continue to shape modern development, keeping up with JavaScript’s future ensures your code remains relevant, efficient, and forward-thinking.