History and Versions
In short: JavaScript is the language; ECMAScript is its official
rulebook, kept by a committee called TC39. Brendan Eich wrote the first
version in days in 1995; Ecma International standardised it in 1997. The
biggest update, ES6 / ES2015, added let, const, arrow functions,
classes and more. Since then a smaller edition ships every year, named by
year. Editions only add features — they never remove what came before,
so old code keeps running in new engines.

Naming a variable the old way and the new way
"JavaScript" is what everyone writes day to day; "ECMAScript" is what
browsers and Node.js actually implement. var has worked since 1995 and
still works today, alongside the const that arrived twenty years later in
ES2015 — nothing broke when const was added:
Both lines run cleanly in any current engine. This is the "editions only add" rule in action: a 1995 keyword and a 2015 keyword sit side by side without conflict.
Converting an edition number to its year
Since ES2015 the numbered and year names line up by a fixed gap: year = edition number + 2009. So ES6 is ES2015, and ES8 is ES2017:
Find the feature's edition
constarrived in the big update, ES6.
Knowing the gap tells you what a browser from a given year should
understand. A browser released well after 2015 accepts const and arrow
functions; one from 2012 rejects them with a syntax error, because they
simply did not exist yet.
The trap: thinking an edition replaces the last one
New editions only add. They never delete a feature or force old code to
change. That is why a codebase can mix var from 1995 with const from
2015 with syntax from last year, all in the same file, and every line still
runs.
Quick practice
What is ECMAScript?
Which edition introduced let, const and arrow functions?
ES8 is the same edition as which year name?
Who decides what gets added to the language today?
Code written in 2012 using var is opened in a browser released this year. What happens?
🎯 Your turn
A friend's code uses const and arrow functions. It works in their new
browser but fails in a very old one. Explain why, using the names
JavaScript, ECMAScript and ES2015.
Write your explanation and submit it — there's no code to run here, just your reasoning.
