Compile Ready
Module 1 · JavaScript Fundamentals

ECMAScript & Language Versions

Beginner7m read3m practice10m total
ECMAScriptTC39Standards

Introduction

ECMAScript is the specification; JavaScript is the most popular implementation of it. When people say "ES6 features" they mean features defined in the 6th edition of the ECMAScript standard.

The spec is maintained by TC39, a committee of browser vendors and companies, through a public, staged proposal process.

Why This Matters

Knowing the difference between ECMAScript and JavaScript — and how features graduate through TC39 stages — signals that you understand the ecosystem, not just the syntax. It also explains why tools like Babel and TypeScript exist: to use new syntax before every engine supports it.

Theory

ECMAScript vs JavaScript

  • ECMAScript (ECMA-262) is the standard document that defines the language's grammar, types, and semantics.
  • JavaScript is an implementation of that standard (with host additions like the DOM in browsers or fs in Node).
  • Other implementations exist historically (JScript, ActionScript).

The TC39 proposal process

Every new feature moves through five stages:

StageNameMeaning
0StrawpersonAn idea.
1ProposalProblem and rough API described.
2DraftFormal spec text; syntax is taking shape.
3CandidateSpec complete; awaiting implementation feedback.
4FinishedShipped in engines; included in the next yearly edition.

Naming: edition vs year

After ES6, editions are named by year: ES2016, ES2017 … ES2023. "ES6" and "ES2015" are the same thing. Prefer the year names for clarity when discussing recent features.

Transpilation

Because engines adopt features at different speeds, teams write modern syntax and use Babel (transpiler) to down-compile to widely-supported code, and polyfills to add missing runtime APIs.

Visual Diagrams

How a feature becomes part of the language
Idea
 |
[0] Strawperson
 |
[1] Proposal    -- problem + rough API
 |
[2] Draft       -- formal spec text
 |
[3] Candidate   -- implementations + feedback
 |
[4] Finished    -- ships in engines, added to yearly edition

TC39's staged process keeps the language stable yet evolving.

Code Examples

Feature detection instead of version checks

You almost never check the ECMAScript version at runtime. Instead, detect whether a feature exists:

Loading…

Interview Questions

1What is the difference between JavaScript and ECMAScript?

ECMAScript is the language specification (ECMA-262) maintained by TC39. JavaScript is an implementation of that specification, plus host-specific APIs (DOM in the browser, filesystem in Node). Saying an engine "supports ES2021" means it implements that edition of the spec.

Asked at:GoogleMeta
2What is TC39 and what are the proposal stages?

TC39 is the technical committee that evolves ECMAScript. Proposals advance through five stages: 0 strawperson, 1 proposal, 2 draft, 3 candidate, 4 finished. A Stage-4 proposal is included in the next annual edition.

Quiz

1. "ES6" and "ES2015" refer to…

2. At which TC39 stage is a feature guaranteed to ship?

Summary

  • ECMAScript is the specification; JavaScript is its main implementation.
  • TC39 evolves the language through five stages (0–4); Stage 4 ships.
  • After ES6, editions are named by year (ES2016+).
  • Babel (transpile) and polyfills let teams use new syntax before universal support.

Cheat Sheet

ECMAScript = spec (ECMA-262, by TC39). JavaScript = implementation.

Stages: 0 strawperson → 1 proposal → 2 draft → 3 candidate → 4 finished (ships).

Naming: ES6 == ES2015; after that, year names.

Tooling: Babel = transpile syntax; polyfill = add missing runtime APIs.