ECMAScript
Standardized by Ecma International (TC39)
ECMAScript is the standardized specification that defines the core language rules underlying JavaScript, covering syntax, data types, operators, and built-in objects in precise detail. Maintained by the TC39 committee at Ecma…
Definition
ECMAScript is the standardized specification that defines the core language rules underlying JavaScript, covering syntax, data types, operators, and built-in objects in precise detail. Maintained by the TC39 committee at Ecma International, it exists so multiple implementations, including browser engines and server runtimes, can each build a JavaScript engine that behaves consistently according to a shared, versioned specification rather than an informal convention.
Overview
JavaScript existed as a practical, shipping language before it had a formal specification, and inconsistencies between early implementations created real interoperability problems for developers writing code meant to run in different browsers. ECMAScript was created to solve that by giving the language a single, vendor-neutral standard document that any implementer, whether building a browser engine or a server runtime, could follow to produce compatible behavior, with JavaScript being the most common and best-known implementation of the spec. Mechanically, ECMAScript is developed and maintained by Technical Committee 39, TC39, at Ecma International, a body made up of representatives from browser vendors, tech companies, and independent contributors. New features move through a staged proposal process, from an initial idea through increasingly concrete drafts with test suites and multiple implementations, before being merged into a yearly specification edition. Since 2015, editions have shipped annually, each named for its year, which is why developers refer to features as being part of 'ES2015,' 'ES2020,' and so on, rather than a single monolithic version number. ECMAScript itself defines only the core language, things like variable declarations, control flow, functions, classes, and built-in objects like Array and Promise, but not browser-specific APIs like the DOM, fetch, or localStorage, which are specified separately by other standards bodies such as WHATWG. This separation is why 'JavaScript' as experienced in a browser is really ECMAScript plus a large set of host-provided web APIs layered on top, and why the same ECMAScript-compliant engine can power very different environments, from browsers to Node.js to embedded scripting contexts. In practice, developers rarely interact with the ECMAScript specification document directly, but they benefit from it constantly: tools like Babel and TypeScript compile newer ECMAScript syntax down to versions supported by older engines, and browser and runtime vendors track the spec to decide which new syntax and built-ins to ship next. Understanding which ECMAScript edition introduced a feature helps developers reason about browser and Node.js compatibility. The main limitation is the gap between specification and adoption: a feature reaching a finished stage in TC39's process does not mean every engine supports it immediately, so real-world compatibility still depends on tracking individual browser and runtime release notes or compatibility tables. Because ECMAScript defines the language core only, understanding it fully still requires layering in separate specifications for the DOM and other web platform APIs to have a complete picture of what actually runs inside a browser environment.
Specification
- Defines the core syntax, types, and built-in objects of JavaScript
- Maintained by the TC39 committee at Ecma International
- Uses a staged proposal process before features reach a final edition
- Ships new yearly editions since 2015, such as ES2015 and ES2020
- Excludes browser-specific APIs like the DOM, defined by separate standards
- Implemented by multiple engines including V8, SpiderMonkey, and JavaScriptCore
- Referenced by tools like Babel and TypeScript for compiling newer syntax