You will see the word ECMAScript in articles, job posts and release notes. It sounds like a different language. It is not.
ECMAScript is the written standard that defines the JavaScript language. JavaScript is the language you write and run. ECMAScript is the document that says exactly how the language must behave, so that every browser and runtime can implement it the same way.
Who decides what goes in
A committee called TC39, made up of people from browser makers, companies and the community, develops the language. New ideas start as proposals and move through stages. Only when a proposal reaches the final stage, and engines have started to implement it, does it become part of the next yearly edition of the standard.
Engines turn the standard into something that runs
Each browser has a JavaScript engine that follows the standard:
| Engine | Used in |
|---|---|
| V8 | Chrome, Edge, Node.js |
| SpiderMonkey | Firefox |
| JavaScriptCore | Safari |
What is not ECMAScript
This part matters, because beginners often mix it up. ECMAScript covers the language itself: variables, functions, arrays, objects, promises, classes and modules. It does not cover things the browser adds:
documentand the DOMfetch()setTimeout()(browsers and Node.js both provide it, but it is not defined by the language standard)localStorage,console, and so on
Those are Web APIs, provided by the browser (see Web APIs vs the JavaScript Language). You use them from JavaScript, but they are separate things.
// Part of the language: works in any JavaScript environment
const numbers = [3, 1, 2];
console.log(numbers.sort()); // → [1, 2, 3]
// Provided by the browser, not by the language
console.log(typeof document); // → object
When a feature is added to the standard, you will often read “added in ES2022” or “ES2024”. The next lesson explains these names: JavaScript Versions.