Skip to content

The History of JavaScript

From a simple browser scripting language to a universal runtime — JavaScript’s journey is one of the most remarkable stories in software engineering.

Understanding JavaScript’s history helps you:

  • Appreciate why certain features exist (and quirks remain)
  • Understand why some patterns emerged (IIFE, transpilers)
  • Anticipate where the language is heading
  • Ace interview questions about ECMAScript versions

“10 days to change the world” — In May 1995, Netscape hired Brendan Eich and told him to create a scripting language for the browser. He had 10 days. The result? JavaScript.

The language was quickly thrown together under enormous pressure. This explains many of JavaScript’s infamous quirks:

  • typeof null === "object" — a bug that became a feature
  • Loose equality == coercion — designed for beginners
  • No module system — the web was simple back then
timeline
title JavaScript History
1995 : Brendan Eich creates JavaScript in 10 days
: Originally named Mocha → LiveScript → JavaScript
1997 : ECMAScript 1 (ES1) – First standard
1998 : ES2 – Minor edits
1999 : ES3 – try/catch, regex, switch
2009 : ES5 – strict mode, JSON, Array methods
2015 : ES6/ES2015 – let, const, arrow, classes, promises, modules
2016 : ES2016 – Array.includes, exponentiation
2017 : ES2017 – async/await, Object.values/entries
2018 : ES2018 – rest/spread for objects, Promise.finally
2019 : ES2019 – Array.flat/flatMap, Object.fromEntries
2020 : ES2020 – Optional chaining, nullish coalescing, Promise.allSettled
2021 : ES2021 – String.replaceAll, Promise.any, logical assignment
2022 : ES2022 – Class fields, top-level await, Array.at
2023 : ES2023 – Array.findLast, toSorted/toReversed
2024 : ES2024 – Object.groupBy, Promise.withResolvers

Brendan Eich, working at Netscape, created the first version in 10 days. The language was:

  • Originally called Mocha (internal codename)
  • Then LiveScript (developer preview)
  • Finally JavaScript (marketing decision — riding Java’s popularity wave)

💡 Did You Know? JavaScript has nothing to do with Java. The name was a marketing ploy by Netscape to capitalize on Java’s hype.

1996–1999 — Browser Wars & Standardization

Section titled “1996–1999 — Browser Wars & Standardization”
YearEventImpact
1996Microsoft creates JScriptCompeting implementation, causes compatibility issues
1997ECMAScript 1 standardizedLanguage gets a formal specification (ECMA-262)
1999ES3 releasedtry/catch, regex, switch — language matures

For 10 years, JavaScript didn’t get a new version. But the community innovated:

  • 2005: AJAX (Jesse James Garrett) — web apps become dynamic
  • 2006: jQuery — makes DOM manipulation cross-browser
  • 2008: V8 engine (Google Chrome) — JavaScript becomes FAST

After a decade, ES5 arrived with major improvements:

  • "use strict" mode — catch common errors
  • JSON.parse/stringify — data handling
  • Array.map/filter/reduce — functional programming
  • Object.create/defineProperty — better object control

The biggest update in JavaScript history:

// Before ES6
var name = "Alice";
function greet(name) {
return "Hello, " + name + "!";
}
// ES6 brings:
let name = "Alice"; // block-scoped
const PI = 3.14; // constant
const greet = (name) => // arrow function
`Hello, ${name}!`; // template literal

ES6 introduced: let/const, arrow functions, classes, promises, modules, destructuring, spread/rest, template literals, Symbols, Map/Set, generators, iterators, and for...of.

Since 2015, a new ECMAScript version is released every year, each adding smaller, well-designed features:

// ES2017 — async/await
async function fetchUser(id) {
const res = await fetch(`/api/${id}`);
return res.json();
}
// ES2020 — Optional chaining
const city = user?.address?.city ?? "Unknown";
flowchart LR
A["🚀 JavaScript 2024"] --> B["🌐 Browsers"]
A --> C["🖥️ Node.js / Deno / Bun"]
A --> D["📱 React Native"]
A --> E["🖥️ Electron / Tauri"]
A --> F["🤖 TensorFlow.js"]
A --> G["🔌 IoT (Johnny-Five)"]
style A fill:#f0db4f,color:#000
// ❌ Thinking JavaScript is "Java light"
// They are completely different languages!
// ❌ Not knowing ES version differences
// ES5 doesn't support arrow functions!
// const add = (a, b) => a + b; → SyntaxError in old browsers

Q: What’s the difference between JavaScript and ECMAScript? A: ECMAScript is the specification (the rules). JavaScript is the implementation (what actually runs). Think of it like a blueprint vs. the building.

  • Created in 1995 by Brendan Eich in 10 days
  • Standardized as ECMAScript (annual updates since 2015)
  • ES6 (2015) was the biggest transformation
  • Now an annual release cycle with incremental improvements
  • Runs everywhere: browsers, servers, mobile, desktop, IoT

💡 Key Insight: JavaScript’s chaotic history is why it has quirks. Modern JavaScript (ES6+) is a clean, powerful language. Focus on modern features — the quirks are just footnotes.