Skip to content

Instantly share code, notes, and snippets.

@foolip
Created April 13, 2021 10:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save foolip/c732a00f00bf8e78a383dd27c00d093e to your computer and use it in GitHub Desktop.
Save foolip/c732a00f00bf8e78a383dd27c00d093e to your computer and use it in GitHub Desktop.
Introduction
Scope
Conformance
Example Clause Heading
Normative References
Overview
Web Scripting
Hosts and Implementations
ECMAScript Overview
Objects
The Strict Variant of ECMAScript
Terms and Definitions
implementation-approximated
implementation-defined
host-defined
type
primitive value
object
constructor
prototype
ordinary object
exotic object
standard object
built-in object
undefined value
Undefined type
null value
Null type
Boolean value
Boolean type
Boolean object
String value
String type
String object
Number value
Number type
Number object
Infinity
NaN
BigInt value
BigInt type
BigInt object
Symbol value
Symbol type
Symbol object
function
built-in function
property
method
built-in method
attribute
own property
inherited property
Organization of This Specification
Notational Conventions
Syntactic and Lexical Grammars
Context-Free Grammars
The Lexical and RegExp Grammars
The Numeric String Grammar
The Syntactic Grammar
Grammar Notation
Algorithm Conventions
Abstract Operations
Syntax-Directed Operations
Runtime Semantics
Implicit Completion Values
Throw an Exception
ReturnIfAbrupt
ReturnIfAbrupt Shorthands
Static Semantics
Mathematical Operations
Value Notation
ECMAScript Data Types and Values
ECMAScript Language Types
The Undefined Type
The Null Type
The Boolean Type
The String Type
StringIndexOf ( string, searchValue, fromIndex )
The Symbol Type
Well-Known Symbols
Numeric Types
The Number Type
Number::unaryMinus ( x )
Number::bitwiseNOT ( x )
Number::exponentiate ( base, exponent )
Number::multiply ( x, y )
Number::divide ( x, y )
Number::remainder ( n, d )
Number::add ( x, y )
Number::subtract ( x, y )
Number::leftShift ( x, y )
Number::signedRightShift ( x, y )
Number::unsignedRightShift ( x, y )
Number::lessThan ( x, y )
Number::equal ( x, y )
Number::sameValue ( x, y )
Number::sameValueZero ( x, y )
NumberBitwiseOp ( op, x, y )
Number::bitwiseAND ( x, y )
Number::bitwiseXOR ( x, y )
Number::bitwiseOR ( x, y )
Number::toString ( x )
The BigInt Type
BigInt::unaryMinus ( x )
BigInt::bitwiseNOT ( x )
BigInt::exponentiate ( base, exponent )
BigInt::multiply ( x, y )
BigInt::divide ( x, y )
BigInt::remainder ( n, d )
BigInt::add ( x, y )
BigInt::subtract ( x, y )
BigInt::leftShift ( x, y )
BigInt::signedRightShift ( x, y )
BigInt::unsignedRightShift ( x, y )
BigInt::lessThan ( x, y )
BigInt::equal ( x, y )
BigInt::sameValue ( x, y )
BigInt::sameValueZero ( x, y )
BinaryAnd ( x, y )
BinaryOr ( x, y )
BinaryXor ( x, y )
BigIntBitwiseOp ( op, x, y )
BigInt::bitwiseAND ( x, y )
BigInt::bitwiseXOR ( x, y )
BigInt::bitwiseOR ( x, y )
BigInt::toString ( x )
The Object Type
Property Attributes
Object Internal Methods and Internal Slots
Invariants of the Essential Internal Methods
Well-Known Intrinsic Objects
ECMAScript Specification Types
The List and Record Specification Types
The Set and Relation Specification Types
The Completion Record Specification Type
Await
Await Fulfilled Functions
Await Rejected Functions
NormalCompletion
ThrowCompletion
UpdateEmpty ( completionRecord, value )
The Reference Record Specification Type
IsPropertyReference ( V )
IsUnresolvableReference ( V )
IsSuperReference ( V )
GetValue ( V )
PutValue ( V, W )
GetThisValue ( V )
InitializeReferencedBinding ( V, W )
The Property Descriptor Specification Type
IsAccessorDescriptor ( Desc )
IsDataDescriptor ( Desc )
IsGenericDescriptor ( Desc )
FromPropertyDescriptor ( Desc )
ToPropertyDescriptor ( Obj )
CompletePropertyDescriptor ( Desc )
The Environment Record Specification Type
The Abstract Closure Specification Type
Data Blocks
CreateByteDataBlock ( size )
CreateSharedByteDataBlock ( size )
CopyDataBlockBytes ( toBlock, toIndex, fromBlock, fromIndex, count )
Abstract Operations
Type Conversion
ToPrimitive ( input [ , preferredType ] )
OrdinaryToPrimitive ( O, hint )
ToBoolean ( argument )
ToNumeric ( value )
ToNumber ( argument )
ToNumber Applied to the String Type
Runtime Semantics: MV
ToIntegerOrInfinity ( argument )
ToInt32 ( argument )
ToUint32 ( argument )
ToInt16 ( argument )
ToUint16 ( argument )
ToInt8 ( argument )
ToUint8 ( argument )
ToUint8Clamp ( argument )
ToBigInt ( argument )
StringToBigInt ( argument )
ToBigInt64 ( argument )
ToBigUint64 ( argument )
ToString ( argument )
ToObject ( argument )
ToPropertyKey ( argument )
ToLength ( argument )
CanonicalNumericIndexString ( argument )
ToIndex ( value )
Testing and Comparison Operations
RequireObjectCoercible ( argument )
IsArray ( argument )
IsCallable ( argument )
IsConstructor ( argument )
IsExtensible ( O )
IsIntegralNumber ( argument )
IsPropertyKey ( argument )
IsRegExp ( argument )
IsStringPrefix ( p, q )
SameValue ( x, y )
SameValueZero ( x, y )
SameValueNonNumeric ( x, y )
Abstract Relational Comparison
Abstract Equality Comparison
Strict Equality Comparison
Operations on Objects
MakeBasicObject ( internalSlotsList )
Get ( O, P )
GetV ( V, P )
Set ( O, P, V, Throw )
CreateDataProperty ( O, P, V )
CreateMethodProperty ( O, P, V )
CreateDataPropertyOrThrow ( O, P, V )
DefinePropertyOrThrow ( O, P, desc )
DeletePropertyOrThrow ( O, P )
GetMethod ( V, P )
HasProperty ( O, P )
HasOwnProperty ( O, P )
Call ( F, V [ , argumentsList ] )
Construct ( F [ , argumentsList [ , newTarget ] ] )
SetIntegrityLevel ( O, level )
TestIntegrityLevel ( O, level )
CreateArrayFromList ( elements )
LengthOfArrayLike ( obj )
CreateListFromArrayLike ( obj [ , elementTypes ] )
Invoke ( V, P [ , argumentsList ] )
OrdinaryHasInstance ( C, O )
SpeciesConstructor ( O, defaultConstructor )
EnumerableOwnPropertyNames ( O, kind )
GetFunctionRealm ( obj )
CopyDataProperties ( target, source, excludedItems )
Operations on Iterator Objects
GetIterator ( obj [ , hint [ , method ] ] )
IteratorNext ( iteratorRecord [ , value ] )
IteratorComplete ( iterResult )
IteratorValue ( iterResult )
IteratorStep ( iteratorRecord )
IteratorClose ( iteratorRecord, completion )
AsyncIteratorClose ( iteratorRecord, completion )
CreateIterResultObject ( value, done )
CreateListIteratorRecord ( list )
IterableToList ( items [ , method ] )
Syntax-Directed Operations
Scope Analysis
Static Semantics: BoundNames
Static Semantics: DeclarationPart
Static Semantics: IsConstantDeclaration
Static Semantics: LexicallyDeclaredNames
Static Semantics: LexicallyScopedDeclarations
Static Semantics: VarDeclaredNames
Static Semantics: VarScopedDeclarations
Static Semantics: TopLevelLexicallyDeclaredNames
Static Semantics: TopLevelLexicallyScopedDeclarations
Static Semantics: TopLevelVarDeclaredNames
Static Semantics: TopLevelVarScopedDeclarations
Labels
Static Semantics: ContainsDuplicateLabels
Static Semantics: ContainsUndefinedBreakTarget
Static Semantics: ContainsUndefinedContinueTarget
Function Name Inference
Static Semantics: HasName
Static Semantics: IsFunctionDefinition
Static Semantics: IsAnonymousFunctionDefinition ( expr )
Static Semantics: IsIdentifierRef
Runtime Semantics: NamedEvaluation
Contains
Static Semantics: Contains
Static Semantics: ComputedPropertyContains
Miscellaneous
Runtime Semantics: InstantiateFunctionObject
Runtime Semantics: BindingInitialization
InitializeBoundName ( name, value, environment )
Runtime Semantics: IteratorBindingInitialization
Static Semantics: AssignmentTargetType
Static Semantics: PropName
Executable Code and Execution Contexts
Environment Records
The Environment Record Type Hierarchy
Declarative Environment Records
HasBinding ( N )
CreateMutableBinding ( N, D )
CreateImmutableBinding ( N, S )
InitializeBinding ( N, V )
SetMutableBinding ( N, V, S )
GetBindingValue ( N, S )
DeleteBinding ( N )
HasThisBinding ( )
HasSuperBinding ( )
WithBaseObject ( )
Object Environment Records
HasBinding ( N )
CreateMutableBinding ( N, D )
CreateImmutableBinding ( N, S )
InitializeBinding ( N, V )
SetMutableBinding ( N, V, S )
GetBindingValue ( N, S )
DeleteBinding ( N )
HasThisBinding ( )
HasSuperBinding ( )
WithBaseObject ( )
Function Environment Records
BindThisValue ( V )
HasThisBinding ( )
HasSuperBinding ( )
GetThisBinding ( )
GetSuperBase ( )
Global Environment Records
HasBinding ( N )
CreateMutableBinding ( N, D )
CreateImmutableBinding ( N, S )
InitializeBinding ( N, V )
SetMutableBinding ( N, V, S )
GetBindingValue ( N, S )
DeleteBinding ( N )
HasThisBinding ( )
HasSuperBinding ( )
WithBaseObject ( )
GetThisBinding ( )
HasVarDeclaration ( N )
HasLexicalDeclaration ( N )
HasRestrictedGlobalProperty ( N )
CanDeclareGlobalVar ( N )
CanDeclareGlobalFunction ( N )
CreateGlobalVarBinding ( N, D )
CreateGlobalFunctionBinding ( N, V, D )
Module Environment Records
GetBindingValue ( N, S )
DeleteBinding ( N )
HasThisBinding ( )
GetThisBinding ( )
CreateImportBinding ( N, M, N2 )
Environment Record Operations
GetIdentifierReference ( env, name, strict )
NewDeclarativeEnvironment ( E )
NewObjectEnvironment ( O, W, E )
NewFunctionEnvironment ( F, newTarget )
NewGlobalEnvironment ( G, thisValue )
NewModuleEnvironment ( E )
Realms
CreateRealm ( )
CreateIntrinsics ( realmRec )
SetRealmGlobalObject ( realmRec, globalObj, thisValue )
SetDefaultGlobalBindings ( realmRec )
Execution Contexts
GetActiveScriptOrModule ( )
ResolveBinding ( name [ , env ] )
GetThisEnvironment ( )
ResolveThisBinding ( )
GetNewTarget ( )
GetGlobalObject ( )
Jobs and Host Operations to Enqueue Jobs
JobCallback Records
HostMakeJobCallback ( callback )
HostCallJobCallback ( jobCallback, V, argumentsList )
HostEnqueuePromiseJob ( job, realm )
InitializeHostDefinedRealm ( )
Agents
AgentSignifier ( )
AgentCanSuspend ( )
Agent Clusters
Forward Progress
Processing Model of WeakRef and FinalizationRegistry Objects
Objectives
Liveness
Execution
Host Hooks
HostEnqueueFinalizationRegistryCleanupJob ( finalizationRegistry )
ClearKeptObjects ( )
AddToKeptObjects ( object )
CleanupFinalizationRegistry ( finalizationRegistry )
Ordinary and Exotic Objects Behaviours
Ordinary Object Internal Methods and Internal Slots
[[GetPrototypeOf]] ( )
OrdinaryGetPrototypeOf ( O )
[[SetPrototypeOf]] ( V )
OrdinarySetPrototypeOf ( O, V )
[[IsExtensible]] ( )
OrdinaryIsExtensible ( O )
[[PreventExtensions]] ( )
OrdinaryPreventExtensions ( O )
[[GetOwnProperty]] ( P )
OrdinaryGetOwnProperty ( O, P )
[[DefineOwnProperty]] ( P, Desc )
OrdinaryDefineOwnProperty ( O, P, Desc )
IsCompatiblePropertyDescriptor ( Extensible, Desc, Current )
ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )
[[HasProperty]] ( P )
OrdinaryHasProperty ( O, P )
[[Get]] ( P, Receiver )
OrdinaryGet ( O, P, Receiver )
[[Set]] ( P, V, Receiver )
OrdinarySet ( O, P, V, Receiver )
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[[Delete]] ( P )
OrdinaryDelete ( O, P )
[[OwnPropertyKeys]] ( )
OrdinaryOwnPropertyKeys ( O )
OrdinaryObjectCreate ( proto [ , additionalInternalSlotsList ] )
OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
RequireInternalSlot ( O, internalSlot )
ECMAScript Function Objects
[[Call]] ( thisArgument, argumentsList )
PrepareForOrdinaryCall ( F, newTarget )
OrdinaryCallBindThis ( F, calleeContext, thisArgument )
Runtime Semantics: EvaluateBody
OrdinaryCallEvaluateBody ( F, argumentsList )
[[Construct]] ( argumentsList, newTarget )
OrdinaryFunctionCreate ( functionPrototype, sourceText, ParameterList, Body, thisMode, Scope )
AddRestrictedFunctionProperties ( F, realm )
%ThrowTypeError% ( )
MakeConstructor ( F [ , writablePrototype [ , prototype ] ] )
MakeClassConstructor ( F )
MakeMethod ( F, homeObject )
SetFunctionName ( F, name [ , prefix ] )
SetFunctionLength ( F, length )
FunctionDeclarationInstantiation ( func, argumentsList )
Built-in Function Objects
[[Call]] ( thisArgument, argumentsList )
[[Construct]] ( argumentsList, newTarget )
CreateBuiltinFunction ( steps, length, name, internalSlotsList [ , realm [ , prototype [ , prefix ] ] ] )
Built-in Exotic Object Internal Methods and Slots
Bound Function Exotic Objects
[[Call]] ( thisArgument, argumentsList )
[[Construct]] ( argumentsList, newTarget )
BoundFunctionCreate ( targetFunction, boundThis, boundArgs )
Array Exotic Objects
[[DefineOwnProperty]] ( P, Desc )
ArrayCreate ( length [ , proto ] )
ArraySpeciesCreate ( originalArray, length )
ArraySetLength ( A, Desc )
String Exotic Objects
[[GetOwnProperty]] ( P )
[[DefineOwnProperty]] ( P, Desc )
[[OwnPropertyKeys]] ( )
StringCreate ( value, prototype )
StringGetOwnProperty ( S, P )
Arguments Exotic Objects
[[GetOwnProperty]] ( P )
[[DefineOwnProperty]] ( P, Desc )
[[Get]] ( P, Receiver )
[[Set]] ( P, V, Receiver )
[[Delete]] ( P )
CreateUnmappedArgumentsObject ( argumentsList )
CreateMappedArgumentsObject ( func, formals, argumentsList, env )
MakeArgGetter ( name, env )
MakeArgSetter ( name, env )
Integer-Indexed Exotic Objects
[[GetOwnProperty]] ( P )
[[HasProperty]] ( P )
[[DefineOwnProperty]] ( P, Desc )
[[Get]] ( P, Receiver )
[[Set]] ( P, V, Receiver )
[[Delete]] ( P )
[[OwnPropertyKeys]] ( )
IntegerIndexedObjectCreate ( prototype )
IsValidIntegerIndex ( O, index )
IntegerIndexedElementGet ( O, index )
IntegerIndexedElementSet ( O, index, value )
Module Namespace Exotic Objects
[[SetPrototypeOf]] ( V )
[[IsExtensible]] ( )
[[PreventExtensions]] ( )
[[GetOwnProperty]] ( P )
[[DefineOwnProperty]] ( P, Desc )
[[HasProperty]] ( P )
[[Get]] ( P, Receiver )
[[Set]] ( P, V, Receiver )
[[Delete]] ( P )
[[OwnPropertyKeys]] ( )
ModuleNamespaceCreate ( module, exports )
Immutable Prototype Exotic Objects
[[SetPrototypeOf]] ( V )
SetImmutablePrototype ( O, V )
Proxy Object Internal Methods and Internal Slots
[[GetPrototypeOf]] ( )
[[SetPrototypeOf]] ( V )
[[IsExtensible]] ( )
[[PreventExtensions]] ( )
[[GetOwnProperty]] ( P )
[[DefineOwnProperty]] ( P, Desc )
[[HasProperty]] ( P )
[[Get]] ( P, Receiver )
[[Set]] ( P, V, Receiver )
[[Delete]] ( P )
[[OwnPropertyKeys]] ( )
[[Call]] ( thisArgument, argumentsList )
[[Construct]] ( argumentsList, newTarget )
ProxyCreate ( target, handler )
ECMAScript Language: Source Code
Source Text
Static Semantics: UTF16EncodeCodePoint ( cp )
Static Semantics: CodePointsToString ( text )
Static Semantics: UTF16SurrogatePairToCodePoint ( lead, trail )
Static Semantics: CodePointAt ( string, position )
Static Semantics: StringToCodePoints ( string )
Static Semantics: ParseText ( sourceText, goalSymbol )
Types of Source Code
Directive Prologues and the Use Strict Directive
Strict Mode Code
Non-ECMAScript Functions
ECMAScript Language: Lexical Grammar
Unicode Format-Control Characters
White Space
Line Terminators
Comments
Tokens
Names and Keywords
Identifier Names
Static Semantics: Early Errors
Keywords and Reserved Words
Punctuators
Literals
Null Literals
Boolean Literals
Numeric Literals
Static Semantics: MV
Static Semantics: NumericValue
String Literals
Static Semantics: SV
Static Semantics: MV
Regular Expression Literals
Static Semantics: Early Errors
Static Semantics: BodyText
Static Semantics: FlagText
Template Literal Lexical Components
Static Semantics: TV and TRV
Automatic Semicolon Insertion
Rules of Automatic Semicolon Insertion
Examples of Automatic Semicolon Insertion
Interesting Cases of Automatic Semicolon Insertion
Interesting Cases of Automatic Semicolon Insertion in Statement Lists
Cases of Automatic Semicolon Insertion and “[no LineTerminator here]”
List of Grammar Productions with Optional Operands and “[no LineTerminator here]”
ECMAScript Language: Expressions
Identifiers
Static Semantics: Early Errors
Static Semantics: StringValue
Runtime Semantics: Evaluation
Primary Expression
The this Keyword
Runtime Semantics: Evaluation
Identifier Reference
Literals
Runtime Semantics: Evaluation
Array Initializer
Runtime Semantics: ArrayAccumulation
Runtime Semantics: Evaluation
Object Initializer
Static Semantics: Early Errors
Static Semantics: IsComputedPropertyKey
Static Semantics: PropertyNameList
Runtime Semantics: Evaluation
Runtime Semantics: PropertyDefinitionEvaluation
Function Defining Expressions
Regular Expression Literals
Static Semantics: Early Errors
Static Semantics: IsValidRegularExpressionLiteral ( literal )
Runtime Semantics: Evaluation
Template Literals
Static Semantics: Early Errors
Static Semantics: TemplateStrings
GetTemplateObject ( templateLiteral )
Runtime Semantics: SubstitutionEvaluation
Runtime Semantics: Evaluation
The Grouping Operator
Static Semantics: Early Errors
Runtime Semantics: Evaluation
Left-Hand-Side Expressions
Static Semantics
Static Semantics: Early Errors
Property Accessors
Runtime Semantics: Evaluation
EvaluatePropertyAccessWithExpressionKey ( baseValue, expression, strict )
EvaluatePropertyAccessWithIdentifierKey ( baseValue, identifierName, strict )
The new Operator
Runtime Semantics: Evaluation
EvaluateNew ( constructExpr, arguments )
Function Calls
Runtime Semantics: Evaluation
EvaluateCall ( func, ref, arguments, tailPosition )
The super Keyword
Runtime Semantics: Evaluation
GetSuperConstructor ( )
MakeSuperPropertyReference ( actualThis, propertyKey, strict )
Argument Lists
Runtime Semantics: ArgumentListEvaluation
Optional Chains
Runtime Semantics: Evaluation
Runtime Semantics: ChainEvaluation
Import Calls
Runtime Semantics: Evaluation
Tagged Templates
Runtime Semantics: Evaluation
Meta Properties
Runtime Semantics: Evaluation
HostGetImportMetaProperties ( moduleRecord )
HostFinalizeImportMeta ( importMeta, moduleRecord )
Update Expressions
Static Semantics: Early Errors
Postfix Increment Operator
Runtime Semantics: Evaluation
Postfix Decrement Operator
Runtime Semantics: Evaluation
Prefix Increment Operator
Runtime Semantics: Evaluation
Prefix Decrement Operator
Runtime Semantics: Evaluation
Unary Operators
The delete Operator
Static Semantics: Early Errors
Runtime Semantics: Evaluation
The void Operator
Runtime Semantics: Evaluation
The typeof Operator
Runtime Semantics: Evaluation
Unary + Operator
Runtime Semantics: Evaluation
Unary - Operator
Runtime Semantics: Evaluation
Bitwise NOT Operator ( ~ )
Runtime Semantics: Evaluation
Logical NOT Operator ( ! )
Runtime Semantics: Evaluation
Exponentiation Operator
Runtime Semantics: Evaluation
Multiplicative Operators
Runtime Semantics: Evaluation
Additive Operators
The Addition Operator ( + )
Runtime Semantics: Evaluation
The Subtraction Operator ( - )
Runtime Semantics: Evaluation
Bitwise Shift Operators
The Left Shift Operator ( << )
Runtime Semantics: Evaluation
The Signed Right Shift Operator ( >> )
Runtime Semantics: Evaluation
The Unsigned Right Shift Operator ( >>> )
Runtime Semantics: Evaluation
Relational Operators
Runtime Semantics: Evaluation
InstanceofOperator ( V, target )
Equality Operators
Runtime Semantics: Evaluation
Binary Bitwise Operators
Runtime Semantics: Evaluation
Binary Logical Operators
Runtime Semantics: Evaluation
Conditional Operator ( ? : )
Runtime Semantics: Evaluation
Assignment Operators
Static Semantics: Early Errors
Runtime Semantics: Evaluation
ApplyStringOrNumericBinaryOperator ( lval, opText, rval )
EvaluateStringOrNumericBinaryExpression ( leftOperand, opText, rightOperand )
Destructuring Assignment
Static Semantics: Early Errors
Runtime Semantics: DestructuringAssignmentEvaluation
Runtime Semantics: PropertyDestructuringAssignmentEvaluation
Runtime Semantics: RestDestructuringAssignmentEvaluation
Runtime Semantics: IteratorDestructuringAssignmentEvaluation
Runtime Semantics: KeyedDestructuringAssignmentEvaluation
Comma Operator ( , )
Runtime Semantics: Evaluation
ECMAScript Language: Statements and Declarations
Statement Semantics
Runtime Semantics: Evaluation
Block
Static Semantics: Early Errors
Runtime Semantics: Evaluation
BlockDeclarationInstantiation ( code, env )
Declarations and the Variable Statement
Let and Const Declarations
Static Semantics: Early Errors
Runtime Semantics: Evaluation
Variable Statement
Runtime Semantics: Evaluation
Destructuring Binding Patterns
Runtime Semantics: PropertyBindingInitialization
Runtime Semantics: RestBindingInitialization
Runtime Semantics: KeyedBindingInitialization
Empty Statement
Runtime Semantics: Evaluation
Expression Statement
Runtime Semantics: Evaluation
The if Statement
Static Semantics: Early Errors
Runtime Semantics: Evaluation
Iteration Statements
Semantics
LoopContinues ( completion, labelSet )
Runtime Semantics: LoopEvaluation
The do-while Statement
Static Semantics: Early Errors
Runtime Semantics: DoWhileLoopEvaluation
The while Statement
Static Semantics: Early Errors
Runtime Semantics: WhileLoopEvaluation
The for Statement
Static Semantics: Early Errors
Runtime Semantics: ForLoopEvaluation
ForBodyEvaluation ( test, increment, stmt, perIterationBindings, labelSet )
CreatePerIterationEnvironment ( perIterationBindings )
The for-in, for-of, and for-await-of Statements
Static Semantics: Early Errors
Static Semantics: IsDestructuring
Runtime Semantics: ForDeclarationBindingInitialization
Runtime Semantics: ForDeclarationBindingInstantiation
Runtime Semantics: ForInOfLoopEvaluation
ForIn/OfHeadEvaluation ( uninitializedBoundNames, expr, iterationKind )
ForIn/OfBodyEvaluation ( lhs, stmt, iteratorRecord, iterationKind, lhsKind, labelSet [ , iteratorKind ] )
Runtime Semantics: Evaluation
EnumerateObjectProperties ( O )
For-In Iterator Objects
CreateForInIterator ( object )
The %ForInIteratorPrototype% Object
%ForInIteratorPrototype%.next ( )
Properties of For-In Iterator Instances
The continue Statement
Static Semantics: Early Errors
Runtime Semantics: Evaluation
The break Statement
Static Semantics: Early Errors
Runtime Semantics: Evaluation
The return Statement
Runtime Semantics: Evaluation
The with Statement
Static Semantics: Early Errors
Runtime Semantics: Evaluation
The switch Statement
Static Semantics: Early Errors
Runtime Semantics: CaseBlockEvaluation
CaseClauseIsSelected ( C, input )
Runtime Semantics: Evaluation
Labelled Statements
Static Semantics: Early Errors
Static Semantics: IsLabelledFunction ( stmt )
Runtime Semantics: Evaluation
Runtime Semantics: LabelledEvaluation
The throw Statement
Runtime Semantics: Evaluation
The try Statement
Static Semantics: Early Errors
Runtime Semantics: CatchClauseEvaluation
Runtime Semantics: Evaluation
The debugger Statement
Runtime Semantics: Evaluation
ECMAScript Language: Functions and Classes
Parameter Lists
Static Semantics: Early Errors
Static Semantics: ContainsExpression
Static Semantics: IsSimpleParameterList
Static Semantics: HasInitializer
Static Semantics: ExpectedArgumentCount
Function Definitions
Static Semantics: Early Errors
Static Semantics: FunctionBodyContainsUseStrict
Runtime Semantics: EvaluateFunctionBody
Runtime Semantics: InstantiateOrdinaryFunctionObject
Runtime Semantics: InstantiateOrdinaryFunctionExpression
Runtime Semantics: Evaluation
Arrow Function Definitions
Static Semantics: Early Errors
Static Semantics: ConciseBodyContainsUseStrict
Runtime Semantics: EvaluateConciseBody
Runtime Semantics: InstantiateArrowFunctionExpression
Runtime Semantics: Evaluation
Method Definitions
Static Semantics: Early Errors
Static Semantics: HasDirectSuper
Static Semantics: SpecialMethod
Runtime Semantics: DefineMethod
Runtime Semantics: MethodDefinitionEvaluation
Generator Function Definitions
Static Semantics: Early Errors
Runtime Semantics: EvaluateGeneratorBody
Runtime Semantics: InstantiateGeneratorFunctionObject
Runtime Semantics: InstantiateGeneratorFunctionExpression
Runtime Semantics: Evaluation
Async Generator Function Definitions
Static Semantics: Early Errors
Runtime Semantics: EvaluateAsyncGeneratorBody
Runtime Semantics: InstantiateAsyncGeneratorFunctionObject
Runtime Semantics: InstantiateAsyncGeneratorFunctionExpression
Runtime Semantics: Evaluation
Class Definitions
Static Semantics: Early Errors
Static Semantics: ClassElementKind
Static Semantics: ConstructorMethod
Static Semantics: IsStatic
Static Semantics: NonConstructorMethodDefinitions
Static Semantics: PrototypePropertyNameList
Runtime Semantics: ClassDefinitionEvaluation
Default Constructor Functions
Runtime Semantics: BindingClassDeclarationEvaluation
Runtime Semantics: Evaluation
Async Function Definitions
Static Semantics: Early Errors
Runtime Semantics: InstantiateAsyncFunctionObject
Runtime Semantics: InstantiateAsyncFunctionExpression
Runtime Semantics: EvaluateAsyncFunctionBody
Runtime Semantics: Evaluation
Async Arrow Function Definitions
Static Semantics: Early Errors
Static Semantics: AsyncConciseBodyContainsUseStrict
Runtime Semantics: EvaluateAsyncConciseBody
Runtime Semantics: InstantiateAsyncArrowFunctionExpression
Runtime Semantics: Evaluation
Tail Position Calls
Static Semantics: IsInTailPosition ( call )
Static Semantics: HasCallInTailPosition
Statement Rules
Expression Rules
PrepareForTailCall ( )
ECMAScript Language: Scripts and Modules
Scripts
Static Semantics: Early Errors
Static Semantics: IsStrict
Runtime Semantics: Evaluation
Script Records
ParseScript ( sourceText, realm, hostDefined )
ScriptEvaluation ( scriptRecord )
GlobalDeclarationInstantiation ( script, env )
Modules
Module Semantics
Static Semantics: Early Errors
Static Semantics: ImportedLocalNames ( importEntries )
Static Semantics: ModuleRequests
Abstract Module Records
Cyclic Module Records
Link ( ) Concrete Method
InnerModuleLinking ( module, stack, index )
Evaluate ( ) Concrete Method
InnerModuleEvaluation ( module, stack, index )
Example Cyclic Module Record Graphs
Source Text Module Records
ParseModule ( sourceText, realm, hostDefined )
GetExportedNames ( [ exportStarSet ] ) Concrete Method
ResolveExport ( exportName [ , resolveSet ] ) Concrete Method
InitializeEnvironment ( ) Concrete Method
ExecuteModule ( ) Concrete Method
HostResolveImportedModule ( referencingScriptOrModule, specifier )
HostImportModuleDynamically ( referencingScriptOrModule, specifier, promiseCapability )
FinishDynamicImport ( referencingScriptOrModule, specifier, promiseCapability, completion )
GetModuleNamespace ( module )
Runtime Semantics: Evaluation
Imports
Static Semantics: Early Errors
Static Semantics: ImportEntries
Static Semantics: ImportEntriesForModule
Exports
Static Semantics: Early Errors
Static Semantics: ExportedBindings
Static Semantics: ExportedNames
Static Semantics: ExportEntries
Static Semantics: ExportEntriesForModule
Static Semantics: ReferencedBindings
Runtime Semantics: Evaluation
Error Handling and Language Extensions
Forbidden Extensions
ECMAScript Standard Built-in Objects
The Global Object
Value Properties of the Global Object
globalThis
Infinity
NaN
undefined
Function Properties of the Global Object
eval ( x )
PerformEval ( x, callerRealm, strictCaller, direct )
HostEnsureCanCompileStrings ( callerRealm, calleeRealm )
EvalDeclarationInstantiation ( body, varEnv, lexEnv, strict )
isFinite ( number )
isNaN ( number )
parseFloat ( string )
parseInt ( string, radix )
URI Handling Functions
URI Syntax and Semantics
Encode ( string, unescapedSet )
Decode ( string, reservedSet )
decodeURI ( encodedURI )
decodeURIComponent ( encodedURIComponent )
encodeURI ( uri )
encodeURIComponent ( uriComponent )
Constructor Properties of the Global Object
Array ( . . . )
ArrayBuffer ( . . . )
BigInt ( . . . )
BigInt64Array ( . . . )
BigUint64Array ( . . . )
Boolean ( . . . )
DataView ( . . . )
Date ( . . . )
Error ( . . . )
EvalError ( . . . )
FinalizationRegistry ( . . . )
Float32Array ( . . . )
Float64Array ( . . . )
Function ( . . . )
Int8Array ( . . . )
Int16Array ( . . . )
Int32Array ( . . . )
Map ( . . . )
Number ( . . . )
Object ( . . . )
Promise ( . . . )
Proxy ( . . . )
RangeError ( . . . )
ReferenceError ( . . . )
RegExp ( . . . )
Set ( . . . )
SharedArrayBuffer ( . . . )
String ( . . . )
Symbol ( . . . )
SyntaxError ( . . . )
TypeError ( . . . )
Uint8Array ( . . . )
Uint8ClampedArray ( . . . )
Uint16Array ( . . . )
Uint32Array ( . . . )
URIError ( . . . )
WeakMap ( . . . )
WeakRef ( . . . )
WeakSet ( . . . )
Other Properties of the Global Object
Atomics
JSON
Math
Reflect
Fundamental Objects
Object Objects
The Object Constructor
Object ( [ value ] )
Properties of the Object Constructor
Object.assign ( target, ...sources )
Object.create ( O, Properties )
Object.defineProperties ( O, Properties )
ObjectDefineProperties ( O, Properties )
Object.defineProperty ( O, P, Attributes )
Object.entries ( O )
Object.freeze ( O )
Object.fromEntries ( iterable )
CreateDataPropertyOnObject Functions
Object.getOwnPropertyDescriptor ( O, P )
Object.getOwnPropertyDescriptors ( O )
Object.getOwnPropertyNames ( O )
Object.getOwnPropertySymbols ( O )
GetOwnPropertyKeys ( O, type )
Object.getPrototypeOf ( O )
Object.is ( value1, value2 )
Object.isExtensible ( O )
Object.isFrozen ( O )
Object.isSealed ( O )
Object.keys ( O )
Object.preventExtensions ( O )
Object.prototype
Object.seal ( O )
Object.setPrototypeOf ( O, proto )
Object.values ( O )
Properties of the Object Prototype Object
Object.prototype.constructor
Object.prototype.hasOwnProperty ( V )
Object.prototype.isPrototypeOf ( V )
Object.prototype.propertyIsEnumerable ( V )
Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
Object.prototype.toString ( )
Object.prototype.valueOf ( )
Properties of Object Instances
Function Objects
The Function Constructor
Function ( p1, p2, … , pn, body )
CreateDynamicFunction ( constructor, newTarget, kind, args )
Properties of the Function Constructor
Function.length
Function.prototype
Properties of the Function Prototype Object
Function.prototype.apply ( thisArg, argArray )
Function.prototype.bind ( thisArg, ...args )
Function.prototype.call ( thisArg, ...args )
Function.prototype.constructor
Function.prototype.toString ( )
Function.prototype [ @@hasInstance ] ( V )
Function Instances
length
name
prototype
HostHasSourceTextAvailable ( func )
Boolean Objects
The Boolean Constructor
Boolean ( value )
Properties of the Boolean Constructor
Boolean.prototype
Properties of the Boolean Prototype Object
Boolean.prototype.constructor
Boolean.prototype.toString ( )
Boolean.prototype.valueOf ( )
Properties of Boolean Instances
Symbol Objects
The Symbol Constructor
Symbol ( [ description ] )
Properties of the Symbol Constructor
Symbol.asyncIterator
Symbol.for ( key )
Symbol.hasInstance
Symbol.isConcatSpreadable
Symbol.iterator
Symbol.keyFor ( sym )
Symbol.match
Symbol.matchAll
Symbol.prototype
Symbol.replace
Symbol.search
Symbol.species
Symbol.split
Symbol.toPrimitive
Symbol.toStringTag
Symbol.unscopables
Properties of the Symbol Prototype Object
Symbol.prototype.constructor
get Symbol.prototype.description
Symbol.prototype.toString ( )
SymbolDescriptiveString ( sym )
Symbol.prototype.valueOf ( )
Symbol.prototype [ @@toPrimitive ] ( hint )
Symbol.prototype [ @@toStringTag ]
Properties of Symbol Instances
Error Objects
The Error Constructor
Error ( message )
Properties of the Error Constructor
Error.prototype
Properties of the Error Prototype Object
Error.prototype.constructor
Error.prototype.message
Error.prototype.name
Error.prototype.toString ( )
Properties of Error Instances
Native Error Types Used in This Standard
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
NativeError Object Structure
The NativeError Constructors
NativeError ( message )
Properties of the NativeError Constructors
NativeError.prototype
Properties of the NativeError Prototype Objects
NativeError.prototype.constructor
NativeError.prototype.message
NativeError.prototype.name
Properties of NativeError Instances
AggregateError Objects
The AggregateError Constructor
AggregateError ( errors, message )
Properties of the AggregateError Constructor
AggregateError.prototype
Properties of the AggregateError Prototype Object
AggregateError.prototype.constructor
AggregateError.prototype.message
AggregateError.prototype.name
Properties of AggregateError Instances
Numbers and Dates
Number Objects
The Number Constructor
Number ( value )
Properties of the Number Constructor
Number.EPSILON
Number.isFinite ( number )
Number.isInteger ( number )
Number.isNaN ( number )
Number.isSafeInteger ( number )
Number.MAX_SAFE_INTEGER
Number.MAX_VALUE
Number.MIN_SAFE_INTEGER
Number.MIN_VALUE
Number.NaN
Number.NEGATIVE_INFINITY
Number.parseFloat ( string )
Number.parseInt ( string, radix )
Number.POSITIVE_INFINITY
Number.prototype
Properties of the Number Prototype Object
Number.prototype.constructor
Number.prototype.toExponential ( fractionDigits )
Number.prototype.toFixed ( fractionDigits )
Number.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
Number.prototype.toPrecision ( precision )
Number.prototype.toString ( [ radix ] )
Number.prototype.valueOf ( )
Properties of Number Instances
BigInt Objects
The BigInt Constructor
BigInt ( value )
NumberToBigInt ( number )
Properties of the BigInt Constructor
BigInt.asIntN ( bits, bigint )
BigInt.asUintN ( bits, bigint )
BigInt.prototype
Properties of the BigInt Prototype Object
BigInt.prototype.constructor
BigInt.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
BigInt.prototype.toString ( [ radix ] )
BigInt.prototype.valueOf ( )
BigInt.prototype [ @@toStringTag ]
The Math Object
Value Properties of the Math Object
Math.E
Math.LN10
Math.LN2
Math.LOG10E
Math.LOG2E
Math.PI
Math.SQRT1_2
Math.SQRT2
Math [ @@toStringTag ]
Function Properties of the Math Object
Math.abs ( x )
Math.acos ( x )
Math.acosh ( x )
Math.asin ( x )
Math.asinh ( x )
Math.atan ( x )
Math.atanh ( x )
Math.atan2 ( y, x )
Math.cbrt ( x )
Math.ceil ( x )
Math.clz32 ( x )
Math.cos ( x )
Math.cosh ( x )
Math.exp ( x )
Math.expm1 ( x )
Math.floor ( x )
Math.fround ( x )
Math.hypot ( ...args )
Math.imul ( x, y )
Math.log ( x )
Math.log1p ( x )
Math.log10 ( x )
Math.log2 ( x )
Math.max ( ...args )
Math.min ( ...args )
Math.pow ( base, exponent )
Math.random ( )
Math.round ( x )
Math.sign ( x )
Math.sin ( x )
Math.sinh ( x )
Math.sqrt ( x )
Math.tan ( x )
Math.tanh ( x )
Math.trunc ( x )
Date Objects
Overview of Date Objects and Definitions of Abstract Operations
Time Values and Time Range
Day Number and Time within Day
Year Number
Month Number
Date Number
Week Day
LocalTZA ( t, isUTC )
LocalTime ( t )
UTC ( t )
Hours, Minutes, Second, and Milliseconds
MakeTime ( hour, min, sec, ms )
MakeDay ( year, month, date )
MakeDate ( day, time )
TimeClip ( time )
Date Time String Format
Expanded Years
The Date Constructor
Date ( ...values )
Properties of the Date Constructor
Date.now ( )
Date.parse ( string )
Date.prototype
Date.UTC ( year [ , month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] ] )
Properties of the Date Prototype Object
Date.prototype.constructor
Date.prototype.getDate ( )
Date.prototype.getDay ( )
Date.prototype.getFullYear ( )
Date.prototype.getHours ( )
Date.prototype.getMilliseconds ( )
Date.prototype.getMinutes ( )
Date.prototype.getMonth ( )
Date.prototype.getSeconds ( )
Date.prototype.getTime ( )
Date.prototype.getTimezoneOffset ( )
Date.prototype.getUTCDate ( )
Date.prototype.getUTCDay ( )
Date.prototype.getUTCFullYear ( )
Date.prototype.getUTCHours ( )
Date.prototype.getUTCMilliseconds ( )
Date.prototype.getUTCMinutes ( )
Date.prototype.getUTCMonth ( )
Date.prototype.getUTCSeconds ( )
Date.prototype.setDate ( date )
Date.prototype.setFullYear ( year [ , month [ , date ] ] )
Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
Date.prototype.setMilliseconds ( ms )
Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
Date.prototype.setMonth ( month [ , date ] )
Date.prototype.setSeconds ( sec [ , ms ] )
Date.prototype.setTime ( time )
Date.prototype.setUTCDate ( date )
Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
Date.prototype.setUTCMilliseconds ( ms )
Date.prototype.setUTCMinutes ( min [ , sec [ , ms ] ] )
Date.prototype.setUTCMonth ( month [ , date ] )
Date.prototype.setUTCSeconds ( sec [ , ms ] )
Date.prototype.toDateString ( )
Date.prototype.toISOString ( )
Date.prototype.toJSON ( key )
Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
Date.prototype.toString ( )
TimeString ( tv )
DateString ( tv )
TimeZoneString ( tv )
ToDateString ( tv )
Date.prototype.toTimeString ( )
Date.prototype.toUTCString ( )
Date.prototype.valueOf ( )
Date.prototype [ @@toPrimitive ] ( hint )
Properties of Date Instances
Text Processing
String Objects
The String Constructor
String ( value )
Properties of the String Constructor
String.fromCharCode ( ...codeUnits )
String.fromCodePoint ( ...codePoints )
String.prototype
String.raw ( template, ...substitutions )
Properties of the String Prototype Object
String.prototype.charAt ( pos )
String.prototype.charCodeAt ( pos )
String.prototype.codePointAt ( pos )
String.prototype.concat ( ...args )
String.prototype.constructor
String.prototype.endsWith ( searchString [ , endPosition ] )
String.prototype.includes ( searchString [ , position ] )
String.prototype.indexOf ( searchString [ , position ] )
String.prototype.lastIndexOf ( searchString [ , position ] )
String.prototype.localeCompare ( that [ , reserved1 [ , reserved2 ] ] )
String.prototype.match ( regexp )
String.prototype.matchAll ( regexp )
String.prototype.normalize ( [ form ] )
String.prototype.padEnd ( maxLength [ , fillString ] )
String.prototype.padStart ( maxLength [ , fillString ] )
StringPad ( O, maxLength, fillString, placement )
String.prototype.repeat ( count )
String.prototype.replace ( searchValue, replaceValue )
GetSubstitution ( matched, str, position, captures, namedCaptures, replacement )
String.prototype.replaceAll ( searchValue, replaceValue )
String.prototype.search ( regexp )
String.prototype.slice ( start, end )
String.prototype.split ( separator, limit )
SplitMatch ( S, q, R )
String.prototype.startsWith ( searchString [ , position ] )
String.prototype.substring ( start, end )
String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
String.prototype.toLocaleUpperCase ( [ reserved1 [ , reserved2 ] ] )
String.prototype.toLowerCase ( )
String.prototype.toString ( )
String.prototype.toUpperCase ( )
String.prototype.trim ( )
TrimString ( string, where )
String.prototype.trimEnd ( )
String.prototype.trimStart ( )
String.prototype.valueOf ( )
String.prototype [ @@iterator ] ( )
Properties of String Instances
length
String Iterator Objects
The %StringIteratorPrototype% Object
%StringIteratorPrototype%.next ( )
%StringIteratorPrototype% [ @@toStringTag ]
RegExp (Regular Expression) Objects
Patterns
Static Semantics: Early Errors
Static Semantics: CapturingGroupNumber
Static Semantics: IsCharacterClass
Static Semantics: CharacterValue
Static Semantics: SourceText
Static Semantics: CapturingGroupName
Pattern Semantics
Notation
Pattern
Disjunction
Alternative
Term
RepeatMatcher ( m, min, max, greedy, x, c, parenIndex, parenCount )
Assertion
IsWordChar ( e )
Quantifier
Atom
CharacterSetMatcher ( A, invert, direction )
Canonicalize ( ch )
UnicodeMatchProperty ( p )
UnicodeMatchPropertyValue ( p, v )
AtomEscape
BackreferenceMatcher ( n, direction )
CharacterEscape
DecimalEscape
CharacterClassEscape
CharacterClass
ClassRanges
NonemptyClassRanges
CharacterRange ( A, B )
NonemptyClassRangesNoDash
ClassAtom
ClassAtomNoDash
ClassEscape
The RegExp Constructor
RegExp ( pattern, flags )
Abstract Operations for the RegExp Constructor
RegExpAlloc ( newTarget )
RegExpInitialize ( obj, pattern, flags )
Static Semantics: ParsePattern ( patternText, u )
RegExpCreate ( P, F )
EscapeRegExpPattern ( P, F )
Properties of the RegExp Constructor
RegExp.prototype
get RegExp [ @@species ]
Properties of the RegExp Prototype Object
RegExp.prototype.constructor
RegExp.prototype.exec ( string )
RegExpExec ( R, S )
RegExpBuiltinExec ( R, S )
AdvanceStringIndex ( S, index, unicode )
get RegExp.prototype.dotAll
RegExpHasFlag ( R, codeUnit )
get RegExp.prototype.flags
get RegExp.prototype.global
get RegExp.prototype.ignoreCase
RegExp.prototype [ @@match ] ( string )
RegExp.prototype [ @@matchAll ] ( string )
get RegExp.prototype.multiline
RegExp.prototype [ @@replace ] ( string, replaceValue )
RegExp.prototype [ @@search ] ( string )
get RegExp.prototype.source
RegExp.prototype [ @@split ] ( string, limit )
get RegExp.prototype.sticky
RegExp.prototype.test ( S )
RegExp.prototype.toString ( )
get RegExp.prototype.unicode
Properties of RegExp Instances
lastIndex
RegExp String Iterator Objects
CreateRegExpStringIterator ( R, S, global, fullUnicode )
The %RegExpStringIteratorPrototype% Object
%RegExpStringIteratorPrototype%.next ( )
%RegExpStringIteratorPrototype% [ @@toStringTag ]
Indexed Collections
Array Objects
The Array Constructor
Array ( ...values )
Properties of the Array Constructor
Array.from ( items [ , mapfn [ , thisArg ] ] )
Array.isArray ( arg )
Array.of ( ...items )
Array.prototype
get Array [ @@species ]
Properties of the Array Prototype Object
Array.prototype.concat ( ...items )
IsConcatSpreadable ( O )
Array.prototype.constructor
Array.prototype.copyWithin ( target, start [ , end ] )
Array.prototype.entries ( )
Array.prototype.every ( callbackfn [ , thisArg ] )
Array.prototype.fill ( value [ , start [ , end ] ] )
Array.prototype.filter ( callbackfn [ , thisArg ] )
Array.prototype.find ( predicate [ , thisArg ] )
Array.prototype.findIndex ( predicate [ , thisArg ] )
Array.prototype.flat ( [ depth ] )
FlattenIntoArray ( target, source, sourceLen, start, depth [ , mapperFunction, thisArg ] )
Array.prototype.flatMap ( mapperFunction [ , thisArg ] )
Array.prototype.forEach ( callbackfn [ , thisArg ] )
Array.prototype.includes ( searchElement [ , fromIndex ] )
Array.prototype.indexOf ( searchElement [ , fromIndex ] )
Array.prototype.join ( separator )
Array.prototype.keys ( )
Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
Array.prototype.map ( callbackfn [ , thisArg ] )
Array.prototype.pop ( )
Array.prototype.push ( ...items )
Array.prototype.reduce ( callbackfn [ , initialValue ] )
Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
Array.prototype.reverse ( )
Array.prototype.shift ( )
Array.prototype.slice ( start, end )
Array.prototype.some ( callbackfn [ , thisArg ] )
Array.prototype.sort ( comparefn )
SortCompare ( x, y )
Array.prototype.splice ( start, deleteCount, ...items )
Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
Array.prototype.toString ( )
Array.prototype.unshift ( ...items )
Array.prototype.values ( )
Array.prototype [ @@iterator ] ( )
Array.prototype [ @@unscopables ]
Properties of Array Instances
length
Array Iterator Objects
CreateArrayIterator ( array, kind )
The %ArrayIteratorPrototype% Object
%ArrayIteratorPrototype%.next ( )
%ArrayIteratorPrototype% [ @@toStringTag ]
TypedArray Objects
The %TypedArray% Intrinsic Object
%TypedArray% ( )
Properties of the %TypedArray% Intrinsic Object
%TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
%TypedArray%.of ( ...items )
%TypedArray%.prototype
get %TypedArray% [ @@species ]
Properties of the %TypedArray% Prototype Object
get %TypedArray%.prototype.buffer
get %TypedArray%.prototype.byteLength
get %TypedArray%.prototype.byteOffset
%TypedArray%.prototype.constructor
%TypedArray%.prototype.copyWithin ( target, start [ , end ] )
%TypedArray%.prototype.entries ( )
%TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )
%TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
%TypedArray%.prototype.find ( predicate [ , thisArg ] )
%TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
%TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
%TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )
%TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )
%TypedArray%.prototype.join ( separator )
%TypedArray%.prototype.keys ( )
%TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
get %TypedArray%.prototype.length
%TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
%TypedArray%.prototype.reduce ( callbackfn [ , initialValue ] )
%TypedArray%.prototype.reduceRight ( callbackfn [ , initialValue ] )
%TypedArray%.prototype.reverse ( )
%TypedArray%.prototype.set ( source [ , offset ] )
SetTypedArrayFromTypedArray ( target, targetOffset, source )
SetTypedArrayFromArrayLike ( target, targetOffset, source )
%TypedArray%.prototype.slice ( start, end )
%TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
%TypedArray%.prototype.sort ( comparefn )
%TypedArray%.prototype.subarray ( begin, end )
%TypedArray%.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
%TypedArray%.prototype.toString ( )
%TypedArray%.prototype.values ( )
%TypedArray%.prototype [ @@iterator ] ( )
get %TypedArray%.prototype [ @@toStringTag ]
Abstract Operations for TypedArray Objects
TypedArraySpeciesCreate ( exemplar, argumentList )
TypedArrayCreate ( constructor, argumentList )
ValidateTypedArray ( O )
The TypedArray Constructors
TypedArray ( ...args )
AllocateTypedArray ( constructorName, newTarget, defaultProto [ , length ] )
InitializeTypedArrayFromTypedArray ( O, srcArray )
InitializeTypedArrayFromArrayBuffer ( O, buffer, byteOffset, length )
InitializeTypedArrayFromList ( O, values )
InitializeTypedArrayFromArrayLike ( O, arrayLike )
AllocateTypedArrayBuffer ( O, length )
Properties of the TypedArray Constructors
TypedArray.BYTES_PER_ELEMENT
TypedArray.prototype
Properties of the TypedArray Prototype Objects
TypedArray.prototype.BYTES_PER_ELEMENT
TypedArray.prototype.constructor
Properties of TypedArray Instances
Keyed Collections
Map Objects
The Map Constructor
Map ( [ iterable ] )
AddEntriesFromIterable ( target, iterable, adder )
Properties of the Map Constructor
Map.prototype
get Map [ @@species ]
Properties of the Map Prototype Object
Map.prototype.clear ( )
Map.prototype.constructor
Map.prototype.delete ( key )
Map.prototype.entries ( )
Map.prototype.forEach ( callbackfn [ , thisArg ] )
Map.prototype.get ( key )
Map.prototype.has ( key )
Map.prototype.keys ( )
Map.prototype.set ( key, value )
get Map.prototype.size
Map.prototype.values ( )
Map.prototype [ @@iterator ] ( )
Map.prototype [ @@toStringTag ]
Properties of Map Instances
Map Iterator Objects
CreateMapIterator ( map, kind )
The %MapIteratorPrototype% Object
%MapIteratorPrototype%.next ( )
%MapIteratorPrototype% [ @@toStringTag ]
Set Objects
The Set Constructor
Set ( [ iterable ] )
Properties of the Set Constructor
Set.prototype
get Set [ @@species ]
Properties of the Set Prototype Object
Set.prototype.add ( value )
Set.prototype.clear ( )
Set.prototype.constructor
Set.prototype.delete ( value )
Set.prototype.entries ( )
Set.prototype.forEach ( callbackfn [ , thisArg ] )
Set.prototype.has ( value )
Set.prototype.keys ( )
get Set.prototype.size
Set.prototype.values ( )
Set.prototype [ @@iterator ] ( )
Set.prototype [ @@toStringTag ]
Properties of Set Instances
Set Iterator Objects
CreateSetIterator ( set, kind )
The %SetIteratorPrototype% Object
%SetIteratorPrototype%.next ( )
%SetIteratorPrototype% [ @@toStringTag ]
WeakMap Objects
The WeakMap Constructor
WeakMap ( [ iterable ] )
Properties of the WeakMap Constructor
WeakMap.prototype
Properties of the WeakMap Prototype Object
WeakMap.prototype.constructor
WeakMap.prototype.delete ( key )
WeakMap.prototype.get ( key )
WeakMap.prototype.has ( key )
WeakMap.prototype.set ( key, value )
WeakMap.prototype [ @@toStringTag ]
Properties of WeakMap Instances
WeakSet Objects
The WeakSet Constructor
WeakSet ( [ iterable ] )
Properties of the WeakSet Constructor
WeakSet.prototype
Properties of the WeakSet Prototype Object
WeakSet.prototype.add ( value )
WeakSet.prototype.constructor
WeakSet.prototype.delete ( value )
WeakSet.prototype.has ( value )
WeakSet.prototype [ @@toStringTag ]
Properties of WeakSet Instances
Structured Data
ArrayBuffer Objects
Notation
Abstract Operations For ArrayBuffer Objects
AllocateArrayBuffer ( constructor, byteLength )
IsDetachedBuffer ( arrayBuffer )
DetachArrayBuffer ( arrayBuffer [ , key ] )
CloneArrayBuffer ( srcBuffer, srcByteOffset, srcLength, cloneConstructor )
IsUnsignedElementType ( type )
IsUnclampedIntegerElementType ( type )
IsBigIntElementType ( type )
IsNoTearConfiguration ( type, order )
RawBytesToNumeric ( type, rawBytes, isLittleEndian )
GetValueFromBuffer ( arrayBuffer, byteIndex, type, isTypedArray, order [ , isLittleEndian ] )
NumericToRawBytes ( type, value, isLittleEndian )
SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isTypedArray, order [ , isLittleEndian ] )
GetModifySetValueInBuffer ( arrayBuffer, byteIndex, type, value, op [ , isLittleEndian ] )
The ArrayBuffer Constructor
ArrayBuffer ( length )
Properties of the ArrayBuffer Constructor
ArrayBuffer.isView ( arg )
ArrayBuffer.prototype
get ArrayBuffer [ @@species ]
Properties of the ArrayBuffer Prototype Object
get ArrayBuffer.prototype.byteLength
ArrayBuffer.prototype.constructor
ArrayBuffer.prototype.slice ( start, end )
ArrayBuffer.prototype [ @@toStringTag ]
Properties of ArrayBuffer Instances
SharedArrayBuffer Objects
Abstract Operations for SharedArrayBuffer Objects
AllocateSharedArrayBuffer ( constructor, byteLength )
IsSharedArrayBuffer ( obj )
The SharedArrayBuffer Constructor
SharedArrayBuffer ( [ length ] )
Properties of the SharedArrayBuffer Constructor
SharedArrayBuffer.prototype
get SharedArrayBuffer [ @@species ]
Properties of the SharedArrayBuffer Prototype Object
get SharedArrayBuffer.prototype.byteLength
SharedArrayBuffer.prototype.constructor
SharedArrayBuffer.prototype.slice ( start, end )
SharedArrayBuffer.prototype [ @@toStringTag ]
Properties of SharedArrayBuffer Instances
DataView Objects
Abstract Operations For DataView Objects
GetViewValue ( view, requestIndex, isLittleEndian, type )
SetViewValue ( view, requestIndex, isLittleEndian, type, value )
The DataView Constructor
DataView ( buffer [ , byteOffset [ , byteLength ] ] )
Properties of the DataView Constructor
DataView.prototype
Properties of the DataView Prototype Object
get DataView.prototype.buffer
get DataView.prototype.byteLength
get DataView.prototype.byteOffset
DataView.prototype.constructor
DataView.prototype.getBigInt64 ( byteOffset [ , littleEndian ] )
DataView.prototype.getBigUint64 ( byteOffset [ , littleEndian ] )
DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
DataView.prototype.getInt8 ( byteOffset )
DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
DataView.prototype.getUint8 ( byteOffset )
DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
DataView.prototype.setBigInt64 ( byteOffset, value [ , littleEndian ] )
DataView.prototype.setBigUint64 ( byteOffset, value [ , littleEndian ] )
DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
DataView.prototype.setInt8 ( byteOffset, value )
DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
DataView.prototype.setUint8 ( byteOffset, value )
DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
DataView.prototype [ @@toStringTag ]
Properties of DataView Instances
The Atomics Object
Abstract Operations for Atomics
ValidateIntegerTypedArray ( typedArray [ , waitable ] )
ValidateAtomicAccess ( typedArray, requestIndex )
GetWaiterList ( block, i )
EnterCriticalSection ( WL )
LeaveCriticalSection ( WL )
AddWaiter ( WL, W )
RemoveWaiter ( WL, W )
RemoveWaiters ( WL, c )
SuspendAgent ( WL, W, timeout )
NotifyWaiter ( WL, W )
AtomicReadModifyWrite ( typedArray, index, value, op )
ByteListBitwiseOp ( op, xBytes, yBytes )
ByteListEqual ( xBytes, yBytes )
Atomics.add ( typedArray, index, value )
Atomics.and ( typedArray, index, value )
Atomics.compareExchange ( typedArray, index, expectedValue, replacementValue )
Atomics.exchange ( typedArray, index, value )
Atomics.isLockFree ( size )
Atomics.load ( typedArray, index )
Atomics.or ( typedArray, index, value )
Atomics.store ( typedArray, index, value )
Atomics.sub ( typedArray, index, value )
Atomics.wait ( typedArray, index, value, timeout )
Atomics.notify ( typedArray, index, count )
Atomics.xor ( typedArray, index, value )
Atomics [ @@toStringTag ]
The JSON Object
JSON.parse ( text [ , reviver ] )
InternalizeJSONProperty ( holder, name, reviver )
JSON.stringify ( value [ , replacer [ , space ] ] )
SerializeJSONProperty ( state, key, holder )
QuoteJSONString ( value )
UnicodeEscape ( C )
SerializeJSONObject ( state, value )
SerializeJSONArray ( state, value )
JSON [ @@toStringTag ]
Managing Memory
WeakRef Objects
The WeakRef Constructor
WeakRef ( target )
Properties of the WeakRef Constructor
WeakRef.prototype
Properties of the WeakRef Prototype Object
WeakRef.prototype.constructor
WeakRef.prototype.deref ( )
WeakRef.prototype [ @@toStringTag ]
WeakRef Abstract Operations
WeakRefDeref ( weakRef )
Properties of WeakRef Instances
FinalizationRegistry Objects
The FinalizationRegistry Constructor
FinalizationRegistry ( cleanupCallback )
Properties of the FinalizationRegistry Constructor
FinalizationRegistry.prototype
Properties of the FinalizationRegistry Prototype Object
FinalizationRegistry.prototype.constructor
FinalizationRegistry.prototype.register ( target, heldValue [ , unregisterToken ] )
FinalizationRegistry.prototype.unregister ( unregisterToken )
FinalizationRegistry.prototype [ @@toStringTag ]
Properties of FinalizationRegistry Instances
Control Abstraction Objects
Iteration
Common Iteration Interfaces
The Iterable Interface
The Iterator Interface
The AsyncIterable Interface
The AsyncIterator Interface
The IteratorResult Interface
The %IteratorPrototype% Object
%IteratorPrototype% [ @@iterator ] ( )
The %AsyncIteratorPrototype% Object
%AsyncIteratorPrototype% [ @@asyncIterator ] ( )
Async-from-Sync Iterator Objects
CreateAsyncFromSyncIterator ( syncIteratorRecord )
The %AsyncFromSyncIteratorPrototype% Object
%AsyncFromSyncIteratorPrototype%.next ( [ value ] )
%AsyncFromSyncIteratorPrototype%.return ( [ value ] )
%AsyncFromSyncIteratorPrototype%.throw ( [ value ] )
Async-from-Sync Iterator Value Unwrap Functions
Properties of Async-from-Sync Iterator Instances
AsyncFromSyncIteratorContinuation ( result, promiseCapability )
Promise Objects
Promise Abstract Operations
PromiseCapability Records
IfAbruptRejectPromise ( value, capability )
PromiseReaction Records
CreateResolvingFunctions ( promise )
Promise Reject Functions
Promise Resolve Functions
FulfillPromise ( promise, value )
NewPromiseCapability ( C )
GetCapabilitiesExecutor Functions
IsPromise ( x )
RejectPromise ( promise, reason )
TriggerPromiseReactions ( reactions, argument )
HostPromiseRejectionTracker ( promise, operation )
Promise Jobs
NewPromiseReactionJob ( reaction, argument )
NewPromiseResolveThenableJob ( promiseToResolve, thenable, then )
The Promise Constructor
Promise ( executor )
Properties of the Promise Constructor
Promise.all ( iterable )
GetPromiseResolve ( promiseConstructor )
PerformPromiseAll ( iteratorRecord, constructor, resultCapability, promiseResolve )
Promise.all Resolve Element Functions
Promise.allSettled ( iterable )
PerformPromiseAllSettled ( iteratorRecord, constructor, resultCapability, promiseResolve )
Promise.allSettled Resolve Element Functions
Promise.allSettled Reject Element Functions
Promise.any ( iterable )
PerformPromiseAny ( iteratorRecord, constructor, resultCapability, promiseResolve )
Promise.any Reject Element Functions
Promise.prototype
Promise.race ( iterable )
PerformPromiseRace ( iteratorRecord, constructor, resultCapability, promiseResolve )
Promise.reject ( r )
Promise.resolve ( x )
PromiseResolve ( C, x )
get Promise [ @@species ]
Properties of the Promise Prototype Object
Promise.prototype.catch ( onRejected )
Promise.prototype.constructor
Promise.prototype.finally ( onFinally )
Then Finally Functions
Catch Finally Functions
Promise.prototype.then ( onFulfilled, onRejected )
PerformPromiseThen ( promise, onFulfilled, onRejected [ , resultCapability ] )
Promise.prototype [ @@toStringTag ]
Properties of Promise Instances
GeneratorFunction Objects
The GeneratorFunction Constructor
GeneratorFunction ( p1, p2, … , pn, body )
Properties of the GeneratorFunction Constructor
GeneratorFunction.length
GeneratorFunction.prototype
Properties of the GeneratorFunction Prototype Object
GeneratorFunction.prototype.constructor
GeneratorFunction.prototype.prototype
GeneratorFunction.prototype [ @@toStringTag ]
GeneratorFunction Instances
length
name
prototype
AsyncGeneratorFunction Objects
The AsyncGeneratorFunction Constructor
AsyncGeneratorFunction ( p1, p2, … , pn, body )
Properties of the AsyncGeneratorFunction Constructor
AsyncGeneratorFunction.length
AsyncGeneratorFunction.prototype
Properties of the AsyncGeneratorFunction Prototype Object
AsyncGeneratorFunction.prototype.constructor
AsyncGeneratorFunction.prototype.prototype
AsyncGeneratorFunction.prototype [ @@toStringTag ]
AsyncGeneratorFunction Instances
length
name
prototype
Generator Objects
Properties of the Generator Prototype Object
Generator.prototype.constructor
Generator.prototype.next ( value )
Generator.prototype.return ( value )
Generator.prototype.throw ( exception )
Generator.prototype [ @@toStringTag ]
Properties of Generator Instances
Generator Abstract Operations
GeneratorStart ( generator, generatorBody )
GeneratorValidate ( generator, generatorBrand )
GeneratorResume ( generator, value, generatorBrand )
GeneratorResumeAbrupt ( generator, abruptCompletion, generatorBrand )
GetGeneratorKind ( )
GeneratorYield ( iterNextObj )
Yield ( value )
CreateIteratorFromClosure ( closure, generatorBrand, generatorPrototype )
AsyncGenerator Objects
Properties of the AsyncGenerator Prototype Object
AsyncGenerator.prototype.constructor
AsyncGenerator.prototype.next ( value )
AsyncGenerator.prototype.return ( value )
AsyncGenerator.prototype.throw ( exception )
AsyncGenerator.prototype [ @@toStringTag ]
Properties of AsyncGenerator Instances
AsyncGenerator Abstract Operations
AsyncGeneratorRequest Records
AsyncGeneratorStart ( generator, generatorBody )
AsyncGeneratorValidate ( generator, generatorBrand )
AsyncGeneratorResolve ( generator, value, done )
AsyncGeneratorReject ( generator, exception )
AsyncGeneratorResumeNext ( generator )
AsyncGeneratorResumeNext Return Processor Fulfilled Functions
AsyncGeneratorResumeNext Return Processor Rejected Functions
AsyncGeneratorEnqueue ( generator, completion, generatorBrand )
AsyncGeneratorYield ( value )
CreateAsyncIteratorFromClosure ( closure, generatorBrand, generatorPrototype )
AsyncFunction Objects
The AsyncFunction Constructor
AsyncFunction ( p1, p2, … , pn, body )
Properties of the AsyncFunction Constructor
AsyncFunction.length
AsyncFunction.prototype
Properties of the AsyncFunction Prototype Object
AsyncFunction.prototype.constructor
AsyncFunction.prototype [ @@toStringTag ]
AsyncFunction Instances
length
name
Async Functions Abstract Operations
AsyncFunctionStart ( promiseCapability, asyncFunctionBody )
Reflection
The Reflect Object
Reflect.apply ( target, thisArgument, argumentsList )
Reflect.construct ( target, argumentsList [ , newTarget ] )
Reflect.defineProperty ( target, propertyKey, attributes )
Reflect.deleteProperty ( target, propertyKey )
Reflect.get ( target, propertyKey [ , receiver ] )
Reflect.getOwnPropertyDescriptor ( target, propertyKey )
Reflect.getPrototypeOf ( target )
Reflect.has ( target, propertyKey )
Reflect.isExtensible ( target )
Reflect.ownKeys ( target )
Reflect.preventExtensions ( target )
Reflect.set ( target, propertyKey, V [ , receiver ] )
Reflect.setPrototypeOf ( target, proto )
Reflect [ @@toStringTag ]
Proxy Objects
The Proxy Constructor
Proxy ( target, handler )
Properties of the Proxy Constructor
Proxy.revocable ( target, handler )
Proxy Revocation Functions
Module Namespace Objects
@@toStringTag
Memory Model
Memory Model Fundamentals
Agent Events Records
Chosen Value Records
Candidate Executions
Abstract Operations for the Memory Model
EventSet ( execution )
SharedDataBlockEventSet ( execution )
HostEventSet ( execution )
ComposeWriteEventBytes ( execution, byteIndex, Ws )
ValueOfReadEvent ( execution, R )
Relations of Candidate Executions
agent-order
reads-bytes-from
reads-from
host-synchronizes-with
synchronizes-with
happens-before
Properties of Valid Executions
Valid Chosen Reads
Coherent Reads
Tear Free Reads
Sequentially Consistent Atomics
Valid Executions
Races
Data Races
Data Race Freedom
Shared Memory Guidelines
Grammar Summary
Lexical Grammar
Expressions
Statements
Functions and Classes
Scripts and Modules
Number Conversions
Universal Resource Identifier Character Classes
Regular Expressions
Additional ECMAScript Features for Web Browsers
Additional Syntax
Numeric Literals
Static Semantics
String Literals
Static Semantics
HTML-like Comments
Regular Expressions Patterns
Static Semantics: Early Errors
Static Semantics: IsCharacterClass
Static Semantics: CharacterValue
Pattern Semantics
CharacterRangeOrUnion ( A, B )
Additional Built-in Properties
Additional Properties of the Global Object
escape ( string )
unescape ( string )
Additional Properties of the Object.prototype Object
Object.prototype.__proto__
get Object.prototype.__proto__
set Object.prototype.__proto__
Object.prototype.__defineGetter__ ( P, getter )
Object.prototype.__defineSetter__ ( P, setter )
Object.prototype.__lookupGetter__ ( P )
Object.prototype.__lookupSetter__ ( P )
Additional Properties of the String.prototype Object
String.prototype.substr ( start, length )
String.prototype.anchor ( name )
CreateHTML ( string, tag, attribute, value )
String.prototype.big ( )
String.prototype.blink ( )
String.prototype.bold ( )
String.prototype.fixed ( )
String.prototype.fontcolor ( color )
String.prototype.fontsize ( size )
String.prototype.italics ( )
String.prototype.link ( url )
String.prototype.small ( )
String.prototype.strike ( )
String.prototype.sub ( )
String.prototype.sup ( )
String.prototype.trimLeft ( )
String.prototype.trimRight ( )
Additional Properties of the Date.prototype Object
Date.prototype.getYear ( )
Date.prototype.setYear ( year )
Date.prototype.toGMTString ( )
Additional Properties of the RegExp.prototype Object
RegExp.prototype.compile ( pattern, flags )
Other Additional Features
__proto__ Property Names in Object Initializers
Labelled Function Declarations
Block-Level Function Declarations Web Legacy Compatibility Semantics
Changes to FunctionDeclarationInstantiation
Changes to GlobalDeclarationInstantiation
Changes to EvalDeclarationInstantiation
Changes to Block Static Semantics: Early Errors
Changes to switch Statement Static Semantics: Early Errors
Changes to BlockDeclarationInstantiation
FunctionDeclarations in IfStatement Statement Clauses
VariableStatements in Catch Blocks
Initializers in ForIn Statement Heads
The [[IsHTMLDDA]] Internal Slot
Changes to ToBoolean
Changes to Abstract Equality Comparison
Changes to the typeof Operator
The Strict Mode of ECMAScript
Host Layering Points
Host Hooks
Host-defined Fields
Host-defined Objects
Running Jobs
Internal Methods of Exotic Objects
Built-in Objects and Methods
Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact
Additions and Changes That Introduce Incompatibilities with Prior Editions
Colophon
Bibliography
Copyright & Software License
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment