Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 16262:2017, also known as the ECMAScript® 2017 Language Specification, is the international standard that defines the syntax, semantics, and execution model of the ECMAScript programming language, commonly known as JavaScript. Published jointly by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), this standard ensures cross-platform consistency and interoperability for one of the most widely used scripting languages in the world. This article provides a detailed overview of the scope, core technical requirements, implementation highlights, and compliance considerations for ISO/IEC 16262:2017.
ISO/IEC 16262:2017 specifies the ECMAScript language, a general-purpose, object-oriented scripting language embedded in many environments such as web browsers, server platforms (Node.js), and IoT devices. The standard covers: the lexical and syntactic grammar of the language, the execution context and runtime semantics, the built-in types and objects, the module system, and the conformance requirements for implementations. It replaces the previous edition (ISO/IEC 16262:2011) and introduces several new features including async functions, async/await, Object.values/Object.entries, string padding, SharedArrayBuffer, and more.
The primary purpose of this standard is to provide a single, unambiguous definition of ECMAScript so that software developers can write code that behaves predictably across different platforms and implementations. By establishing a baseline specification, ISO/IEC 16262:2017 promotes portability, reduces fragmentation, and facilitates the creation of robust applications. The standard targets both implementers (engine developers like those working on V8, SpiderMonkey, JavaScriptCore) and advanced users who need to understand the underlying language semantics.
ISO/IEC 16262:2017 defines the ECMAScript language through a formal grammar and operational semantics. The specification is divided into multiple clauses covering syntax, types, execution, and built-in objects.
The standard specifies both a lexical grammar (how input characters are tokenized into identifiers, literals, keywords) and a syntactic grammar (how tokens form expressions, statements, and declarations). ECMAScript 2017 extends the language grammar with async functions, enabling more readable asynchronous code using async/await constructs. The standard also formalizes the semantics of arrow functions, template literals, destructuring, and other features introduced in earlier editions.
ECMAScript defines a dynamic type system with eight fundamental types: Undefined, Null, Boolean, String, Symbol, Number, BigInt (introduced in later editions but not yet in 2017), and Object. Each type has specific internal operations and conversion rules. The standard mandates a conformance requirement on overflow, rounding, and mathematical operations for the Number type (IEEE 754-2008 double-precision floating point).
| Type | Code | Description |
|---|---|---|
| Undefined | undefined | Indicates an uninitialized or absent value. |
| Null | null | Represents a deliberate non-object value. |
| Boolean | true/false | Logical true and false. |
| String | sequence of 16-bit code units | UTF-16 encoded text. |
| Symbol | Symbol() | Unique and immutable primitive used as object property keys. |
| Number | IEEE 754 double-precision | 64-bit floating point numbers (includes NaN and Infinity). |
| Object | collection of properties | Has internal slots and methods; constructed via {} or new. |
ISO/IEC 16262:2017 defines the execution context stack, lexical environments, and variable environments that together form the scoping rules. The standard introduces the concept of running execution contexts with associated variable bindings. It also specifies the ordering of evaluation, completion records, and the async function execution model which returns a Promise and suspends execution at await points.
One of the most significant aspects of the standard is the strict definition of built-in objects and their methods—such as Array.prototype.map, Object.create, or JSON.parse—ensuring that any compliant implementation produces identical behavior for given inputs. This eliminates platform-specific surprises and is critical for large-scale web applications.
The standard includes a strict mode ('use strict';) which tightens error handling, eliminates some silent failures, and restricts dangerous features like implicit global variable creation and this coercion. Strict mode is required inside ES modules and is recommended for all new code. It also prohibits some legacy extensions, reducing the attack surface in security-critical environments.
ISO/IEC 16262:2017 defines four categories of conformance for an implementation:
To verify compliance, the ECMAScript community maintains Test262, the official conformance test suite for ECMAScript. Passing Test262 is the primary benchmark for a compliant engine. Implementers must also ensure that their runtime environment exposes the correct global objects (JSON, Math, Reflect, Promise, etc.) as specified.
It is important to note that ISO/IEC 16262:2017 is synchronized with Ecma International’s ECMA-262 8th Edition (ECMAScript 2017). The two documents are technically identical, and compliance with either confers compliance with the other. Since 2017, more recent editions of the ECMAScript standard have been released (2018, 2019, 2020, etc.), but ISO/IEC 16262:2017 remains the latest ISO/IEC published version at the time of writing. Organizations requiring a formal, audit-grade standard should reference ISO/IEC 16262:2017, while development teams can refer to the freely available ECMA-262 document.