☰
Pins
Table of Contents
Introduction
1
Scope
2
Conformance
3
Normative References
◢
4
Overview
4.1
Web Scripting
◢
4.2
ECMAScript Overview
4.2.1
Objects
4.2.2
The Strict Variant of ECMAScript
◢
4.3
Terms and Definitions
4.3.1
type
4.3.2
primitive value
4.3.3
object
4.3.4
constructor
4.3.5
prototype
4.3.6
ordinary object
4.3.7
exotic object
4.3.8
standard object
4.3.9
built-in object
4.3.10
undefined value
4.3.11
Undefined type
4.3.12
null value
4.3.13
Null type
4.3.14
Boolean value
4.3.15
Boolean type
4.3.16
Boolean object
4.3.17
String value
4.3.18
String type
4.3.19
String object
4.3.20
Number value
4.3.21
Number type
4.3.22
Number object
4.3.23
Infinity
4.3.24
NaN
4.3.25
Symbol value
4.3.26
Symbol type
4.3.27
Symbol object
4.3.28
function
4.3.29
built-in function
4.3.30
property
4.3.31
method
4.3.32
built-in method
4.3.33
attribute
4.3.34
own property
4.3.35
inherited property
4.4
Organization of This Specification
◢
5
Notational Conventions
◢
5.1
Syntactic and Lexical Grammars
5.1.1
Context-Free Grammars
5.1.2
The Lexical and RegExp Grammars
5.1.3
The Numeric String Grammar
5.1.4
The Syntactic Grammar
5.1.5
Grammar Notation
◢
5.2
Algorithm Conventions
5.2.1
Abstract Operations
5.2.2
Syntax-Directed Operations
◢
5.2.3
Runtime Semantics
5.2.3.1
Implicit Completion Values
5.2.3.2
Throw an Exception
5.2.3.3
ReturnIfAbrupt
5.2.3.4
ReturnIfAbrupt Shorthands
5.2.4
Static Semantics
5.2.5
Mathematical Operations
◢
6
ECMAScript Data Types and Values
◢
6.1
ECMAScript Language Types
6.1.1
The Undefined Type
6.1.2
The Null Type
6.1.3
The Boolean Type
6.1.4
The String Type
◢
6.1.5
The Symbol Type
6.1.5.1
Well-Known Symbols
6.1.6
The Number Type
◢
6.1.7
The Object Type
6.1.7.1
Property Attributes
6.1.7.2
Object Internal Methods and Internal Slots
6.1.7.3
Invariants of the Essential Internal Methods
6.1.7.4
Well-Known Intrinsic Objects
◢
6.2
ECMAScript Specification Types
6.2.1
The List and Record Specification Types
6.2.2
The Set and Relation Specification Types
◢
6.2.3
The Completion Record Specification Type
◢
6.2.3.1
Await
6.2.3.1.1
Await Fulfilled Functions
6.2.3.1.2
Await Rejected Functions
6.2.3.2
NormalCompletion
6.2.3.3
ThrowCompletion
6.2.3.4
UpdateEmpty (
completionRecord
,
value
)
◢
6.2.4
The Reference Specification Type
6.2.4.1
GetBase (
V
)
6.2.4.2
GetReferencedName (
V
)
6.2.4.3
IsStrictReference (
V
)
6.2.4.4
HasPrimitiveBase (
V
)
6.2.4.5
IsPropertyReference (
V
)
6.2.4.6
IsUnresolvableReference (
V
)
6.2.4.7
IsSuperReference (
V
)
6.2.4.8
GetValue (
V
)
6.2.4.9
PutValue (
V
,
W
)
6.2.4.10
GetThisValue (
V
)
6.2.4.11
InitializeReferencedBinding (
V
,
W
)
◢
6.2.5
The Property Descriptor Specification Type
6.2.5.1
IsAccessorDescriptor (
Desc
)
6.2.5.2
IsDataDescriptor (
Desc
)
6.2.5.3
IsGenericDescriptor (
Desc
)
6.2.5.4
FromPropertyDescriptor (
Desc
)
6.2.5.5
ToPropertyDescriptor (
Obj
)
6.2.5.6
CompletePropertyDescriptor (
Desc
)
6.2.6
The Lexical Environment and Environment Record Specification Types
◢
6.2.7
Data Blocks
6.2.7.1
CreateByteDataBlock (
size
)
6.2.7.2
CreateSharedByteDataBlock (
size
)
6.2.7.3
CopyDataBlockBytes (
toBlock
,
toIndex
,
fromBlock
,
fromIndex
,
count
)
◢
7
Abstract Operations
◢
7.1
Type Conversion
◢
7.1.1
ToPrimitive (
input
[ ,
PreferredType
] )
7.1.1.1
OrdinaryToPrimitive (
O
,
hint
)
7.1.2
ToBoolean (
argument
)
◢
7.1.3
ToNumber (
argument
)
◢
7.1.3.1
ToNumber Applied to the String Type
7.1.3.1.1
RS: MV
7.1.4
ToInteger (
argument
)
7.1.5
ToInt32 (
argument
)
7.1.6
ToUint32 (
argument
)
7.1.7
ToInt16 (
argument
)
7.1.8
ToUint16 (
argument
)
7.1.9
ToInt8 (
argument
)
7.1.10
ToUint8 (
argument
)
7.1.11
ToUint8Clamp (
argument
)
◢
7.1.12
ToString (
argument
)
7.1.12.1
NumberToString (
m
)
7.1.13
ToObject (
argument
)
7.1.14
ToPropertyKey (
argument
)
7.1.15
ToLength (
argument
)
7.1.16
CanonicalNumericIndexString (
argument
)
7.1.17
ToIndex (
value
)
◢
7.2
Testing and Comparison Operations
7.2.1
RequireObjectCoercible (
argument
)
7.2.2
IsArray (
argument
)
7.2.3
IsCallable (
argument
)
7.2.4
IsConstructor (
argument
)
7.2.5
IsExtensible (
O
)
7.2.6
IsInteger (
argument
)
7.2.7
IsPropertyKey (
argument
)
7.2.8
IsRegExp (
argument
)
7.2.9
IsStringPrefix (
p
,
q
)
7.2.10
SameValue (
x
,
y
)
7.2.11
SameValueZero (
x
,
y
)
7.2.12
SameValueNonNumber (
x
,
y
)
7.2.13
Abstract Relational Comparison
7.2.14
Abstract Equality Comparison
7.2.15
Strict Equality Comparison
◢
7.3
Operations on Objects
7.3.1
Get (
O
,
P
)
7.3.2
GetV (
V
,
P
)
7.3.3
Set (
O
,
P
,
V
,
Throw
)
7.3.4
CreateDataProperty (
O
,
P
,
V
)
7.3.5
CreateMethodProperty (
O
,
P
,
V
)
7.3.6
CreateDataPropertyOrThrow (
O
,
P
,
V
)
7.3.7
DefinePropertyOrThrow (
O
,
P
,
desc
)
7.3.8
DeletePropertyOrThrow (
O
,
P
)
7.3.9
GetMethod (
V
,
P
)
7.3.10
HasProperty (
O
,
P
)
7.3.11
HasOwnProperty (
O
,
P
)
7.3.12
Call (
F
,
V
[ ,
argumentsList
] )
7.3.13
Construct (
F
[ ,
argumentsList
[ ,
newTarget
] ] )
7.3.14
SetIntegrityLevel (
O
,
level
)
7.3.15
TestIntegrityLevel (
O
,
level
)
7.3.16
CreateArrayFromList (
elements
)
7.3.17
CreateListFromArrayLike (
obj
[ ,
elementTypes
] )
7.3.18
Invoke (
V
,
P
[ ,
argumentsList
] )
7.3.19
OrdinaryHasInstance (
C
,
O
)
7.3.20
SpeciesConstructor (
O
,
defaultConstructor
)
7.3.21
EnumerableOwnPropertyNames (
O
,
kind
)
7.3.22
GetFunctionRealm (
obj
)
7.3.23
CopyDataProperties (
target
,
source
,
excludedItems
)
◢
7.4
Operations on Iterator Objects
7.4.1
GetIterator (
obj
[ ,
hint
[ ,
method
] ] )
7.4.2
IteratorNext (
iteratorRecord
[ ,
value
] )
7.4.3
IteratorComplete (
iterResult
)
7.4.4
IteratorValue (
iterResult
)
7.4.5
IteratorStep (
iteratorRecord
)
7.4.6
IteratorClose (
iteratorRecord
,
completion
)
7.4.7
AsyncIteratorClose (
iteratorRecord
,
completion
)
7.4.8
CreateIterResultObject (
value
,
done
)
◢
7.4.9
CreateListIteratorRecord (
list
)
7.4.9.1
ListIterator next ( )
◢
8
Executable Code and Execution Contexts
◢
8.1
Lexical Environments
◢
8.1.1
Environment Records
◢
8.1.1.1
Declarative Environment Records
8.1.1.1.1
HasBinding (
N
)
8.1.1.1.2
CreateMutableBinding (
N
,
D
)
8.1.1.1.3
CreateImmutableBinding (
N
,
S
)
8.1.1.1.4
InitializeBinding (
N
,
V
)
8.1.1.1.5
SetMutableBinding (
N
,
V
,
S
)
8.1.1.1.6
GetBindingValue (
N
,
S
)
8.1.1.1.7
DeleteBinding (
N
)
8.1.1.1.8
HasThisBinding ( )
8.1.1.1.9
HasSuperBinding ( )
8.1.1.1.10
WithBaseObject ( )
◢
8.1.1.2
Object Environment Records
8.1.1.2.1
HasBinding (
N
)
8.1.1.2.2
CreateMutableBinding (
N
,
D
)
8.1.1.2.3
CreateImmutableBinding (
N
,
S
)
8.1.1.2.4
InitializeBinding (
N
,
V
)
8.1.1.2.5
SetMutableBinding (
N
,
V
,
S
)
8.1.1.2.6
GetBindingValue (
N
,
S
)
8.1.1.2.7
DeleteBinding (
N
)
8.1.1.2.8
HasThisBinding ( )
8.1.1.2.9
HasSuperBinding ( )
8.1.1.2.10
WithBaseObject ( )
◢
8.1.1.3
Function Environment Records
8.1.1.3.1
BindThisValue (
V
)
8.1.1.3.2
HasThisBinding ( )
8.1.1.3.3
HasSuperBinding ( )
8.1.1.3.4
GetThisBinding ( )
8.1.1.3.5
GetSuperBase ( )
◢
8.1.1.4
Global Environment Records
8.1.1.4.1
HasBinding (
N
)
8.1.1.4.2
CreateMutableBinding (
N
,
D
)
8.1.1.4.3
CreateImmutableBinding (
N
,
S
)
8.1.1.4.4
InitializeBinding (
N
,
V
)
8.1.1.4.5
SetMutableBinding (
N
,
V
,
S
)
8.1.1.4.6
GetBindingValue (
N
,
S
)
8.1.1.4.7
DeleteBinding (
N
)
8.1.1.4.8
HasThisBinding ( )
8.1.1.4.9
HasSuperBinding ( )
8.1.1.4.10
WithBaseObject ( )
8.1.1.4.11
GetThisBinding ( )
8.1.1.4.12
HasVarDeclaration (
N
)
8.1.1.4.13
HasLexicalDeclaration (
N
)
8.1.1.4.14
HasRestrictedGlobalProperty (
N
)
8.1.1.4.15
CanDeclareGlobalVar (
N
)
8.1.1.4.16
CanDeclareGlobalFunction (
N
)
8.1.1.4.17
CreateGlobalVarBinding (
N
,
D
)
8.1.1.4.18
CreateGlobalFunctionBinding (
N
,
V
,
D
)
◢
8.1.1.5
Module Environment Records
8.1.1.5.1
GetBindingValue (
N
,
S
)
8.1.1.5.2
DeleteBinding (
N
)
8.1.1.5.3
HasThisBinding ( )
8.1.1.5.4
GetThisBinding ( )
8.1.1.5.5
CreateImportBinding (
N
,
M
,
N2
)
◢
8.1.2
Lexical Environment Operations
8.1.2.1
GetIdentifierReference (
lex
,
name
,
strict
)
8.1.2.2
NewDeclarativeEnvironment (
E
)
8.1.2.3
NewObjectEnvironment (
O
,
E
)
8.1.2.4
NewFunctionEnvironment (
F
,
newTarget
)
8.1.2.5
NewGlobalEnvironment (
G
,
thisValue
)
8.1.2.6
NewModuleEnvironment (
E
)
◢
8.2
Realms
8.2.1
CreateRealm ( )
8.2.2
CreateIntrinsics (
realmRec
)
8.2.3
SetRealmGlobalObject (
realmRec
,
globalObj
,
thisValue
)
8.2.4
SetDefaultGlobalBindings (
realmRec
)
◢
8.3
Execution Contexts
8.3.1
GetActiveScriptOrModule ( )
8.3.2
ResolveBinding (
name
[ ,
env
] )
8.3.3
GetThisEnvironment ( )
8.3.4
ResolveThisBinding ( )
8.3.5
GetNewTarget ( )
8.3.6
GetGlobalObject ( )
◢
8.4
Jobs and Job Queues
8.4.1
EnqueueJob (
queueName
,
job
,
arguments
)
8.5
InitializeHostDefinedRealm ( )
8.6
RunJobs ( )
◢
8.7
Agents
8.7.1
AgentSignifier ( )
8.7.2
AgentCanSuspend ( )
8.8
Agent Clusters
8.9
Forward Progress
◢
9
Ordinary and Exotic Objects Behaviours
◢
9.1
Ordinary Object Internal Methods and Internal Slots
◢
9.1.1
[[GetPrototypeOf]] ( )
9.1.1.1
OrdinaryGetPrototypeOf (
O
)
◢
9.1.2
[[SetPrototypeOf]] (
V
)
9.1.2.1
OrdinarySetPrototypeOf (
O
,
V
)
◢
9.1.3
[[IsExtensible]] ( )
9.1.3.1
OrdinaryIsExtensible (
O
)
◢
9.1.4
[[PreventExtensions]] ( )
9.1.4.1
OrdinaryPreventExtensions (
O
)
◢
9.1.5
[[GetOwnProperty]] (
P
)
9.1.5.1
OrdinaryGetOwnProperty (
O
,
P
)
◢
9.1.6
[[DefineOwnProperty]] (
P
,
Desc
)
9.1.6.1
OrdinaryDefineOwnProperty (
O
,
P
,
Desc
)
9.1.6.2
IsCompatiblePropertyDescriptor (
Extensible
,
Desc
,
Current
)
9.1.6.3
ValidateAndApplyPropertyDescriptor (
O
,
P
,
extensible
,
Desc
,
current
)
◢
9.1.7
[[HasProperty]] (
P
)
9.1.7.1
OrdinaryHasProperty (
O
,
P
)
◢
9.1.8
[[Get]] (
P
,
Receiver
)
9.1.8.1
OrdinaryGet (
O
,
P
,
Receiver
)
◢
9.1.9
[[Set]] (