Pins
clear
Table of Contents
Introduction
1
Scope
+
2
Conformance
2.1
Example Normative Optional Clause Heading
2.2
Example Legacy Clause Heading
2.3
Example Legacy Normative Optional Clause Heading
3
Normative References
+
4
Overview
4.1
Web Scripting
4.2
Hosts and Implementations
+
4.3
ECMAScript Overview
4.3.1
Objects
4.3.2
The Strict Variant of ECMAScript
+
4.4
Terms and Definitions
4.4.1
implementation-approximated
4.4.2
implementation-defined
4.4.3
host-defined
4.4.4
type
4.4.5
primitive value
4.4.6
object
4.4.7
constructor
4.4.8
prototype
4.4.9
ordinary object
4.4.10
exotic object
4.4.11
standard object
4.4.12
built-in object
4.4.13
undefined value
4.4.14
Undefined type
4.4.15
null value
4.4.16
Null type
4.4.17
Boolean value
4.4.18
Boolean type
4.4.19
Boolean object
4.4.20
String value
4.4.21
String type
4.4.22
String object
4.4.23
Number value
4.4.24
Number type
4.4.25
Number object
4.4.26
Infinity
4.4.27
NaN
4.4.28
BigInt value
4.4.29
BigInt type
4.4.30
BigInt object
4.4.31
Symbol value
4.4.32
Symbol type
4.4.33
Symbol object
4.4.34
function
4.4.35
built-in function
4.4.36
built-in constructor
4.4.37
property
4.4.38
method
4.4.39
built-in method
4.4.40
attribute
4.4.41
own property
4.4.42
inherited property
4.5
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.1.5.1
Terminal Symbols
5.1.5.2
Nonterminal Symbols and Productions
5.1.5.3
Optional Symbols
5.1.5.4
Grammatical Parameters
5.1.5.5
one of
5.1.5.6
[empty]
5.1.5.7
Lookahead Restrictions
5.1.5.8
[no
LineTerminator
here]
5.1.5.9
but not
5.1.5.10
Descriptive Phrases
+
5.2
Algorithm Conventions
5.2.1
Abstract Operations
5.2.2
Syntax-Directed Operations
+
5.2.3
Runtime Semantics
5.2.3.1
Completion (
completionRecord
)
5.2.3.2
Throw an Exception
5.2.3.3
ReturnIfAbrupt
5.2.3.4
ReturnIfAbrupt Shorthands
5.2.3.5
Implicit Normal Completion
5.2.4
Static Semantics
5.2.5
Mathematical Operations
5.2.6
Value Notation
5.2.7
Identity
+
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.4.1
StringIndexOf (
string
,
searchValue
,
fromIndex
)
6.1.4.2
StringLastIndexOf (
string
,
searchValue
,
fromIndex
)
+
6.1.5
The Symbol Type
6.1.5.1
Well-Known Symbols
+
6.1.6
Numeric Types
+
6.1.6.1
The Number Type
6.1.6.1.1
Number::unaryMinus (
x
)
6.1.6.1.2
Number::bitwiseNOT (
x
)
6.1.6.1.3
Number::exponentiate (
base
,
exponent
)
6.1.6.1.4
Number::multiply (
x
,
y
)
6.1.6.1.5
Number::divide (
x
,
y
)
6.1.6.1.6
Number::remainder (
n
,
d
)
6.1.6.1.7
Number::add (
x
,
y
)
6.1.6.1.8
Number::subtract (
x
,
y
)
6.1.6.1.9
Number::leftShift (
x
,
y
)
6.1.6.1.10
Number::signedRightShift (
x
,
y
)
6.1.6.1.11
Number::unsignedRightShift (
x
,
y
)
6.1.6.1.12
Number::lessThan (
x
,
y
)
6.1.6.1.13
Number::equal (
x
,
y
)
6.1.6.1.14
Number::sameValue (
x
,
y
)
6.1.6.1.15
Number::sameValueZero (
x
,
y
)
6.1.6.1.16
NumberBitwiseOp (
op
,
x
,
y
)
6.1.6.1.17
Number::bitwiseAND (
x
,
y
)
6.1.6.1.18
Number::bitwiseXOR (
x
,
y
)
6.1.6.1.19
Number::bitwiseOR (
x
,
y
)
6.1.6.1.20
Number::toString (
x
,
radix
)
+
6.1.6.2
The BigInt Type
6.1.6.2.1
BigInt::unaryMinus (
x
)
6.1.6.2.2
BigInt::bitwiseNOT (
x
)
6.1.6.2.3
BigInt::exponentiate (
base
,
exponent
)
6.1.6.2.4
BigInt::multiply (
x
,
y
)
6.1.6.2.5
BigInt::divide (
x
,
y
)
6.1.6.2.6
BigInt::remainder (
n
,
d
)
6.1.6.2.7
BigInt::add (
x
,
y
)
6.1.6.2.8
BigInt::subtract (
x
,
y
)
6.1.6.2.9
BigInt::leftShift (
x
,
y
)
6.1.6.2.10
BigInt::signedRightShift (
x
,
y
)
6.1.6.2.11
BigInt::unsignedRightShift (
x
,
y
)
6.1.6.2.12
BigInt::lessThan (
x
,
y
)
6.1.6.2.13
BigInt::equal (
x
,
y
)
6.1.6.2.14
BinaryAnd (
x
,
y
)
6.1.6.2.15
BinaryOr (
x
,
y
)
6.1.6.2.16
BinaryXor (
x
,
y
)
6.1.6.2.17
BigIntBitwiseOp (
op
,
x
,
y
)
6.1.6.2.18
BigInt::bitwiseAND (
x
,
y
)
6.1.6.2.19
BigInt::bitwiseXOR (
x
,
y
)
6.1.6.2.20
BigInt::bitwiseOR (
x
,
y
)
6.1.6.2.21
BigInt::toString (
x
,
radix
)
+
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 Enum Specification Type
6.2.2
The List and Record Specification Types
6.2.3
The Set and Relation Specification Types
+
6.2.4
The Completion Record Specification Type
6.2.4.1
NormalCompletion (
value
)
6.2.4.2
ThrowCompletion (
value
)
6.2.4.3
ReturnCompletion (
value
)
6.2.4.4
UpdateEmpty (
completionRecord
,
value
)
+
6.2.5
The Reference Record Specification Type
6.2.5.1
IsPropertyReference (
V
)
6.2.5.2
IsUnresolvableReference (
V
)
6.2.5.3
IsSuperReference (
V
)
6.2.5.4
IsPrivateReference (
V
)
6.2.5.5
GetValue (
V
)
6.2.5.6
PutValue (
V
,
W
)
6.2.5.7
GetThisValue (
V
)
6.2.5.8
InitializeReferencedBinding (
V
,
W
)
6.2.5.9
MakePrivateReference (
baseValue
,
privateIdentifier
)
+
6.2.6
The Property Descriptor Specification Type
6.2.6.1
IsAccessorDescriptor (
Desc
)
6.2.6.2
IsDataDescriptor (
Desc
)
6.2.6.3
IsGenericDescriptor (
Desc
)
6.2.6.4
FromPropertyDescriptor (
Desc
)
6.2.6.5
ToPropertyDescriptor (
Obj
)
6.2.6.6
CompletePropertyDescriptor (
Desc
)
6.2.7
The Environment Record Specification Type
6.2.8
The Abstract Closure Specification Type
+
6.2.9
Data Blocks
6.2.9.1
CreateByteDataBlock (
size
)
6.2.9.2
CreateSharedByteDataBlock (
size
)
6.2.9.3
CopyDataBlockBytes (
toBlock
,
toIndex
,
fromBlock
,
fromIndex
,
count
)
6.2.10
The PrivateElement Specification Type
6.2.11
The ClassFieldDefinition Record Specification Type
6.2.12
Private Names
6.2.13
The ClassStaticBlockDefinition Record Specification Type
+
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
ToNumeric (
value
)
+
7.1.4
ToNumber (
argument
)
+
7.1.4.1
ToNumber Applied to the String Type
7.1.4.1.1
StringToNumber (
str
)
7.1.4.1.2
RS: StringNumericValue
7.1.4.1.3
RoundMVResult (
n
)
7.1.5
ToIntegerOrInfinity (
argument
)
7.1.6
ToInt32 (
argument
)
7.1.7
ToUint32 (
argument
)
7.1.8
ToInt16 (
argument
)
7.1.9
ToUint16 (
argument
)
7.1.10
ToInt8 (
argument
)
7.1.11
ToUint8 (
argument
)
7.1.12
ToUint8Clamp (
argument
)
7.1.13
ToBigInt (
argument
)
+
7.1.14
StringToBigInt (
str
)
7.1.14.1
StringIntegerLiteral Grammar
7.1.14.2
RS: MV
7.1.15
ToBigInt64 (
argument
)
7.1.16
ToBigUint64 (
argument
)
7.1.17
ToString (
argument
)
7.1.18
ToObject (
argument
)
7.1.19
ToPropertyKey (
argument
)
7.1.20
ToLength (
argument
)
7.1.21
CanonicalNumericIndexString (
argument
)
7.1.22
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
IsRegExp (
argument
)
7.2.7
SS: IsStringWellFormedUnicode (
string
)
7.2.8
SameType (
x
,
y
)
7.2.9
SameValue (
x
,
y
)
7.2.10
SameValueZero (
x
,
y
)
7.2.11
SameValueNonNumber (
x
,
y
)
7.2.12
IsLessThan (
x
,
y
,
LeftFirst
)
7.2.13
IsLooselyEqual (
x
,
y
)
7.2.14
IsStrictlyEqual (
x
,
y
)
+
7.3
Operations on Objects
7.3.1
MakeBasicObject (
internalSlotsList
)
7.3.2
Get (
O
,
P
)
7.3.3
GetV (
V
,
P
)
7.3.4
Set (
O
,
P
,
V
,
Throw
)
7.3.5
CreateDataProperty (
O
,
P
,
V
)
7.3.6
CreateDataPropertyOrThrow (
O
,
P
,
V
)
7.3.7
CreateNonEnumerableDataPropertyOrThrow (
O
,
P
,
V
)
7.3.8
DefinePropertyOrThrow (
O
,
P
,
desc
)
7.3.9
DeletePropertyOrThrow (
O
,
P
)
7.3.10
GetMethod (
V
,
P
)
7.3.11
HasProperty (
O
,
P
)
7.3.12
HasOwnProperty (
O
,
P
)
7.3.13
Call (
F
,
V
[ ,
argumentsList
] )
7.3.14
Construct (
F
[ ,
argumentsList
[ ,
newTarget
] ] )
7.3.15
SetIntegrityLevel (
O
,
level
)
7.3.16
TestIntegrityLevel (
O
,
level
)
7.3.17
CreateArrayFromList (
elements
)
7.3.18
LengthOfArrayLike (
obj
)
7.3.19
CreateListFromArrayLike (
obj
[ ,
validElementTypes
] )
7.3.20
Invoke (
V
,
P
[ ,
argumentsList
] )
7.3.21
OrdinaryHasInstance (
C
,
O
)
7.3.22
SpeciesConstructor (
O
,
defaultConstructor
)
7.3.23
EnumerableOwnProperties (
O
,
kind
)
7.3.24
GetFunctionRealm (
obj
)
7.3.25
CopyDataProperties (
target
,
source
,
excludedItems
)
7.3.26
PrivateElementFind (
O
,
P
)
7.3.27
PrivateFieldAdd (
O
,
P
,
value
)
7.3.28
PrivateMethodOrAccessorAdd (
O
,
method
)
7.3.29
HostEnsureCanAddPrivateElement (
O
)
7.3.30
PrivateGet (
O
,
P
)
7.3.31
PrivateSet (
O
,
P
,
value
)
7.3.32
DefineField (
receiver
,
fieldRecord
)
7.3.33
InitializeInstanceElements (
O
,
constructor
)
7.3.34
AddValueToKeyedGroup (
groups
,
key
,
value
)
7.3.35
GroupBy (
items
,
callback
,
keyCoercion
)
7.3.36
SetterThatIgnoresPrototypeProperties (
thisValue
,
home
,
p
,
v
)
+
7.4
Operations on Iterator Objects
7.4.1
Iterator Records
7.4.2
GetIteratorDirect (
obj
)
7.4.3
GetIteratorFromMethod (
obj
,
method
)
7.4.4
GetIterator (
obj
,
kind
)
7.4.5
GetIteratorFlattenable (
obj
,
primitiveHandling
)
7.4.6
IteratorNext (
iteratorRecord
[ ,
value
] )
7.4.7
IteratorComplete (
iteratorResult
)
7.4.8
IteratorValue (
iteratorResult
)
7.4.9
IteratorStep (
iteratorRecord
)
7.4.10
IteratorStepValue (
iteratorRecord
)
7.4.11
IteratorClose (
iteratorRecord
,
completion
)
7.4.12
IfAbruptCloseIterator (
value
,
iteratorRecord
)
7.4.13
AsyncIteratorClose (
iteratorRecord
,
completion
)
7.4.14
CreateIteratorResultObject (
value
,
done
)
7.4.15
CreateListIteratorRecord (
list
)
7.4.16
IteratorToList (
iteratorRecord
)
+
8
Syntax-Directed Operations
8.1
RS: Evaluation
+
8.2
Scope Analysis
8.2.1
SS: BoundNames
8.2.2
SS: DeclarationPart
8.2.3
SS: IsConstantDeclaration
8.2.4
SS: LexicallyDeclaredNames
8.2.5
SS: LexicallyScopedDeclarations
8.2.6
SS: VarDeclaredNames
8.2.7
SS: VarScopedDeclarations
8.2.8
SS: TopLevelLexicallyDeclaredNames
8.2.9
SS: TopLevelLexicallyScopedDeclarations
8.2.10
SS: TopLevelVarDeclaredNames
8.2.11
SS: TopLevelVarScopedDeclarations
+
8.3
Labels
8.3.1
SS: ContainsDuplicateLabels
8.3.2
SS: ContainsUndefinedBreakTarget
8.3.3
SS: ContainsUndefinedContinueTarget
+
8.4
Function Name Inference
8.4.1
SS: HasName
8.4.2
SS: IsFunctionDefinition
8.4.3
SS: IsAnonymousFunctionDefinition (
expr
)
8.4.4
SS: IsIdentifierRef
8.4.5
RS: NamedEvaluation
+
8.5
Contains
8.5.1
SS: Contains
8.5.2
SS: ComputedPropertyContains
+
8.6
Miscellaneous
8.6.1
RS: InstantiateFunctionObject
+
8.6.2
RS: BindingInitialization
8.6.2.1
InitializeBoundName (
name
,
value
,
environment
)
8.6.3
RS: IteratorBindingInitialization
8.6.4
SS: AssignmentTargetType
8.6.5
SS: PropName
+
9
Executable Code and Execution Contexts
+
9.1
Environment Records
+
9.1.1
The Environment Record Type Hierarchy
+
9.1.1.1
Declarative Environment Records
9.1.1.1.1
HasBinding (
N
)
9.1.1.1.2
CreateMutableBinding (
N
,
D
)
9.1.1.1.3
CreateImmutableBinding (
N
,
S
)
9.1.1.1.4
InitializeBinding (
N
,
V
)
9.1.1.1.5
SetMutableBinding (
N
,
V
,
S
)
9.1.1.1.6
GetBindingValue (
N
,
S
)
9.1.1.1.7
DeleteBinding (
N
)
9.1.1.1.8
HasThisBinding ( )
9.1.1.1.9
HasSuperBinding ( )
9.1.1.1.10
WithBaseObject ( )
+
9.1.1.2
Object Environment Records
9.1.1.2.1
HasBinding (
N
)
9.1.1.2.2
CreateMutableBinding (
N
,
D
)
9.1.1.2.3
CreateImmutableBinding (
N
,
S
)
9.1.1.2.4
InitializeBinding (
N
,
V
)
9.1.1.2.5
SetMutableBinding (
N
,
V
,
S
)
9.1.1.2.6
GetBindingValue (
N
,
S
)
9.1.1.2.7
DeleteBinding (
N
)
9.1.1.2.8
HasThisBinding ( )
9.1.1.2.9
HasSuperBinding ( )
9.1.1.2.10
WithBaseObject ( )
+
9.1.1.3
Function Environment Records
9.1.1.3.1
BindThisValue (
envRec
,
V
)
9.1.1.3.2
HasThisBinding ( )
9.1.1.3.3
HasSuperBinding ( )
9.1.1.3.4
GetThisBinding ( )
9.1.1.3.5
GetSuperBase (
envRec
)
+
9.1.1.4
Global Environment Records
9.1.1.4.1
HasBinding (
N
)
9.1.1.4.2
CreateMutableBinding (
N
,
D
)
9.1.1.4.3
CreateImmutableBinding (
N
,
S
)
9.1.1.4.4
InitializeBinding (
N
,
V
)
9.1.1.4.5
SetMutableBinding (
N
,
V
,
S
)
9.1.1.4.6
GetBindingValue (
N
,
S
)
9.1.1.4.7
DeleteBinding (
N
)
9.1.1.4.8
HasThisBinding ( )
9.1.1.4.9
HasSuperBinding ( )
9.1.1.4.10
WithBaseObject ( )
9.1.1.4.11
GetThisBinding ( )
9.1.1.4.12
HasLexicalDeclaration (
envRec
,
N
)
9.1.1.4.13
HasRestrictedGlobalProperty (
envRec
,
N
)
9.1.1.4.14
CanDeclareGlobalVar (
envRec
,
N
)
9.1.1.4.15
CanDeclareGlobalFunction (
envRec
,
N
)
9.1.1.4.16
CreateGlobalVarBinding (
envRec
,
N
,
D
)
9.1.1.4.17
CreateGlobalFunctionBinding (
envRec
,
N
,
V
,
D
)
+
9.1.1.5
Module Environment Records
9.1.1.5.1
GetBindingValue (
N
,
S
)
9.1.1.5.2
DeleteBinding (
N
)
9.1.1.5.3
HasThisBinding ( )
9.1.1.5.4
GetThisBinding ( )
9.1.1.5.5
CreateImportBinding (
envRec
,
N
,
M
,
N2
)
+
9.1.2
Environment Record Operations
9.1.2.1
GetIdentifierReference (
env
,
name
,
strict
)
9.1.2.2
NewDeclarativeEnvironment (
E
)
9.1.2.3
NewObjectEnvironment (
O
,
W
,
E
)
9.1.2.4
NewFunctionEnvironment (
F
,
newTarget
)
9.1.2.5
NewGlobalEnvironment (
G
,
thisValue
)
9.1.2.6
NewModuleEnvironment (
E
)
+
9.2
PrivateEnvironment Records
+
9.2.1
PrivateEnvironment Record Operations
9.2.1.1
NewPrivateEnvironment (
outerPrivateEnv
)
9.2.1.2
ResolvePrivateIdentifier (
privateEnv
,
identifier
)
+
9.3
Realms
9.3.1
InitializeHostDefinedRealm ( )
9.3.2
CreateIntrinsics (
realmRec
)
9.3.3
SetDefaultGlobalBindings (
realmRec
)
+
9.4
Execution Contexts
9.4.1
GetActiveScriptOrModule ( )
9.4.2
ResolveBinding (
name
[ ,
env
] )
9.4.3
GetThisEnvironment ( )
9.4.4
ResolveThisBinding ( )
9.4.5
GetNewTarget ( )
9.4.6
GetGlobalObject ( )
+
9.5
Jobs and Host Operations to Enqueue Jobs
9.5.1
JobCallback Records
9.5.2
HostMakeJobCallback (
callback
)
9.5.3
HostCallJobCallback (
jobCallback
,
V
,
argumentsList
)
9.5.4
HostEnqueueGenericJob (
job
,
realm
)
9.5.5
HostEnqueuePromiseJob (
job
,
realm
)
9.5.6
HostEnqueueTimeoutJob (
timeoutJob
,
realm
,
milliseconds
)
+
9.6
Agents
9.6.1
AgentSignifier ( )
9.6.2
AgentCanSuspend ( )
9.6.3
IncrementModuleAsyncEvaluationCount ( )
9.7
Agent Clusters
9.8
Forward Progress
+
9.9
Processing Model of WeakRef and FinalizationRegistry Targets
9.9.1
Objectives
9.9.2
Liveness
9.9.3
Execution
+
9.9.4
Host Hooks
9.9.4.1
HostEnqueueFinalizationRegistryCleanupJob (
finalizationRegistry
)
9.10
ClearKeptObjects ( )
9.11
AddToKeptObjects (
value
)
9.12
CleanupFinalizationRegistry (
finalizationRegistry
)
9.13
CanBeHeldWeakly (
v
)
+
10
Ordinary and Exotic Objects Behaviours
+
10.1
Ordinary Object Internal Methods and Internal Slots
+
10.1.1
[[GetPrototypeOf]]
( )
10.1.1.1
OrdinaryGetPrototypeOf (
O
)
+
10.1.2
[[SetPrototypeOf]]
(
V
)
10.1.2.1
OrdinarySetPrototypeOf (
O
,
V
)
+
10.1.3
[[IsExtensible]]
( )
10.1.3.1
OrdinaryIsExtensible (
O
)
+
10.1.4
[[PreventExtensions]]
( )
10.1.4.1
OrdinaryPreventExtensions (
O
)
+
10.1.5
[[GetOwnProperty]]
(
P
)
10.1.5.1
OrdinaryGetOwnProperty (
O
,
P
)
+
10.1.6
[[DefineOwnProperty]]
(
P
,
Desc
)
10.1.6.1
OrdinaryDefineOwnProperty (
O
,
P
,
Desc
)
10.1.6.2
IsCompatiblePropertyDescriptor (
Extensible
,
Desc
,
Current
)
10.1.6.3
ValidateAndApplyPropertyDescriptor (
O
,
P
,
extensible
,
Desc
,
current
)
+
10.1.7
[[HasProperty]]
(
P
)
10.1.7.1
OrdinaryHasProperty (
O
,
P
)
+
10.1.8
[[Get]]
(
P
,
Receiver
)
10.1.8.1
OrdinaryGet (
O
,
P
,
Receiver
)
+
10.1.9
[[Set]]
(
P
,
V
,
Receiver
)
10.1.9.1
OrdinarySet (
O
,
P
,
V
,
Receiver
)
10.1.9.2
OrdinarySetWithOwnDescriptor (
O
,
P
,
V
,
Receiver
,
ownDesc
)
+
10.1.10
[[Delete]]
(
P
)
10.1.10.1
OrdinaryDelete (
O
,
P
)
+
10.1.11
[[OwnPropertyKeys]]
( )
10.1.11.1
OrdinaryOwnPropertyKeys (
O
)
10.1.12
OrdinaryObjectCreate (
proto
[ ,
additionalInternalSlotsList
] )
10.1.13
OrdinaryCreateFromConstructor (
constructor
,
intrinsicDefaultProto
[ ,
internalSlotsList
] )
10.1.14
GetPrototypeFromConstructor (
constructor
,
intrinsicDefaultProto
)
10.1.15
RequireInternalSlot (
O
,
internalSlot
)
+
10.2
ECMAScript Function Objects
+
10.2.1
[[Call]]
(
thisArgument
,
argumentsList
)
10.2.1.1
PrepareForOrdinaryCall (
F
,
newTarget
)
10.2.1.2
OrdinaryCallBindThis (
F
,
calleeContext
,
thisArgument
)
10.2.1.3
RS: EvaluateBody
10.2.1.4
OrdinaryCallEvaluateBody (
F
,
argumentsList
)
10.2.2
[[Construct]]
(
argumentsList
,
newTarget
)
10.2.3
OrdinaryFunctionCreate (
functionPrototype
,
sourceText
,
ParameterList
,
Body
,
thisMode
,
env
,
privateEnv
)
+
10.2.4
AddRestrictedFunctionProperties (
F
,
realm
)
10.2.4.1
%ThrowTypeError% ( )
10.2.5
MakeConstructor (
F
[ ,
writablePrototype
[ ,
prototype
] ] )
10.2.6
MakeClassConstructor (
F
)
10.2.7
MakeMethod (
F
,
homeObject
)
10.2.8
DefineMethodProperty (
homeObject
,
key
,
closure
,
enumerable
)
10.2.9
SetFunctionName (
F
,
name
[ ,
prefix
] )
10.2.10
SetFunctionLength (
F
,
length
)
10.2.11
FunctionDeclarationInstantiation (
func
,
argumentsList
)
+
10.3
Built-in Function Objects
10.3.1
[[Call]]
(
thisArgument
,
argumentsList
)
10.3.2
[[Construct]]
(
argumentsList
,
newTarget
)
10.3.3
BuiltinCallOrConstruct (
F
,
thisArgument
,
argumentsList
,
newTarget
)
10.3.4
CreateBuiltinFunction (
behaviour
,
length
,
name
,
additionalInternalSlotsList
[ ,
realm
[ ,
prototype
[ ,
prefix
] ] ] )
+
10.4
Built-in Exotic Object Internal Methods and Slots
+
10.4.1
Bound Function Exotic Objects
10.4.1.1
[[Call]]
(
thisArgument
,
argumentsList
)
10.4.1.2
[[Construct]]
(
argumentsList
,
newTarget
)
10.4.1.3
BoundFunctionCreate (
targetFunction
,
boundThis
,
boundArgs
)
+
10.4.2
Array Exotic Objects
10.4.2.1
[[DefineOwnProperty]]
(
P
,
Desc
)
10.4.2.2
ArrayCreate (
length
[ ,
proto
] )
10.4.2.3
ArraySpeciesCreate (
originalArray
,
length
)
10.4.2.4
ArraySetLength (
A
,
Desc
)
+
10.4.3
String Exotic Objects
10.4.3.1
[[GetOwnProperty]]
(
P
)
10.4.3.2
[[DefineOwnProperty]]
(
P
,
Desc
)
10.4.3.3
[[OwnPropertyKeys]]
( )
10.4.3.4
StringCreate (
value
,
prototype
)
10.4.3.5
StringGetOwnProperty (
S
,
P
)
+
10.4.4
Arguments Exotic Objects
10.4.4.1
[[GetOwnProperty]]
(
P
)
10.4.4.2
[[DefineOwnProperty]]
(
P
,
Desc
)
10.4.4.3
[[Get]]
(
P
,
Receiver
)
10.4.4.4
[[Set]]
(
P
,
V
,
Receiver
)
10.4.4.5
[[Delete]]
(
P
)
10.4.4.6
CreateUnmappedArgumentsObject (
argumentsList
)
+
10.4.4.7
CreateMappedArgumentsObject (
func
,
formals
,
argumentsList
,
env
)
10.4.4.7.1
MakeArgGetter (
name
,
env
)
10.4.4.7.2
MakeArgSetter (
name
,
env
)
+
10.4.5
TypedArray Exotic Objects
10.4.5.1
[[PreventExtensions]]
( )
10.4.5.2
[[GetOwnProperty]]
(
P
)
10.4.5.3
[[HasProperty]]
(
P
)
10.4.5.4
[[DefineOwnProperty]]
(
P
,
Desc
)
10.4.5.5
[[Get]]
(
P
,
Receiver
)
10.4.5.6
[[Set]]
(
P
,
V
,
Receiver
)
10.4.5.7
[[Delete]]
(
P
)
10.4.5.8
[[OwnPropertyKeys]]
( )
10.4.5.9
TypedArray With Buffer Witness Records
10.4.5.10
MakeTypedArrayWithBufferWitnessRecord (
obj
,
order
)
10.4.5.11
TypedArrayCreate (
prototype
)
10.4.5.12
TypedArrayByteLength (
taRecord
)
10.4.5.13
TypedArrayLength (
taRecord
)
10.4.5.14
IsTypedArrayOutOfBounds (
taRecord
)
10.4.5.15
IsTypedArrayFixedLength (
O
)
10.4.5.16
IsValidIntegerIndex (
O
,
index
)
10.4.5.17
TypedArrayGetElement (
O
,
index
)
10.4.5.18
TypedArraySetElement (
O
,
index
,
value
)
10.4.5.19
IsArrayBufferViewOutOfBounds (
O
)
+
10.4.6
Module Namespace Exotic Objects
10.4.6.1
[[GetPrototypeOf]]
( )
10.4.6.2
[[SetPrototypeOf]]
(
V
)
10.4.6.3
[[IsExtensible]]
( )
10.4.6.4
[[PreventExtensions]]
( )
10.4.6.5
[[GetOwnProperty]]
(
P
)
10.4.6.6
[[DefineOwnProperty]]
(
P
,
Desc
)
10.4.6.7
[[HasProperty]]
(
P
)
10.4.6.8
[[Get]]
(
P
,
Receiver
)
10.4.6.9
[[Set]]
(
P
,
V
,
Receiver
)
10.4.6.10
[[Delete]]
(
P
)
10.4.6.11
[[OwnPropertyKeys]]
( )
10.4.6.12
ModuleNamespaceCreate (
module
,
exports
)
+
10.4.7
Immutable Prototype Exotic Objects
10.4.7.1
[[SetPrototypeOf]]
(
V
)
10.4.7.2
SetImmutablePrototype (
O
,
V
)
+
10.5
Proxy Object Internal Methods and Internal Slots
10.5.1
[[GetPrototypeOf]]
( )
10.5.2
[[SetPrototypeOf]]
(
V
)
10.5.3
[[IsExtensible]]
( )
10.5.4
[[PreventExtensions]]
( )
10.5.5
[[GetOwnProperty]]
(
P
)
10.5.6
[[DefineOwnProperty]]
(
P
,
Desc
)
10.5.7
[[HasProperty]]
(
P
)
10.5.8
[[Get]]
(
P
,
Receiver
)
10.5.9
[[Set]]
(
P
,
V
,
Receiver
)
10.5.10
[[Delete]]
(
P
)
10.5.11
[[OwnPropertyKeys]]
( )
10.5.12
[[Call]]
(
thisArgument
,
argumentsList
)
10.5.13
[[Construct]]
(
argumentsList
,
newTarget
)
10.5.14
ValidateNonRevokedProxy (
proxy
)
10.5.15
ProxyCreate (
target
,
handler
)
+
11
ECMAScript Language: Source Text
+
11.1
Source Text
11.1.1
SS: UTF16EncodeCodePoint (
cp
)
11.1.2
SS: CodePointsToString (
text
)
11.1.3
SS: UTF16SurrogatePairToCodePoint (
lead
,
trail
)
11.1.4
SS: CodePointAt (
string
,
position
)
11.1.5
SS: StringToCodePoints (
string
)
11.1.6
SS: ParseText (
sourceText
,
goalSymbol
)
+
11.2
Types of Source Code
11.2.1
Directive Prologues and the Use Strict Directive
+
11.2.2
Strict Mode Code
11.2.2.1
SS: IsStrict (
node
)
11.2.3
Non-ECMAScript Functions
+
12
ECMAScript Language: Lexical Grammar
12.1
Unicode Format-Control Characters
12.2
White Space
12.3
Line Terminators
12.4
Comments
12.5
Hashbang Comments
12.6
Tokens
+
12.7
Names and Keywords
+
12.7.1
Identifier Names
12.7.1.1
SS: Early Errors
12.7.1.2
SS: IdentifierCodePoints
12.7.1.3
SS: IdentifierCodePoint
12.7.2
Keywords and Reserved Words
12.8
Punctuators
+
12.9
Literals
12.9.1
Null Literals
12.9.2
Boolean Literals
+
12.9.3
Numeric Literals
12.9.3.1
SS: Early Errors
12.9.3.2
SS: MV
12.9.3.3
SS: NumericValue
+
12.9.4
String Literals
12.9.4.1
SS: Early Errors
12.9.4.2
SS: SV
12.9.4.3
SS: MV
+
12.9.5
Regular Expression Literals
12.9.5.1
SS: BodyText
12.9.5.2
SS: FlagText
+
12.9.6
Template Literal Lexical Components
12.9.6.1
SS: TV
12.9.6.2
SS: TRV
+
12.10
Automatic Semicolon Insertion
12.10.1
Rules of Automatic Semicolon Insertion
12.10.2
Examples of Automatic Semicolon Insertion
+
12.10.3
Interesting Cases of Automatic Semicolon Insertion
12.10.3.1
Interesting Cases of Automatic Semicolon Insertion in Statement Lists
+
12.10.3.2
Cases of Automatic Semicolon Insertion and “[no
LineTerminator
here]”
12.10.3.2.1
List of Grammar Productions with Optional Operands and “[no
LineTerminator
here]”
+
13
ECMAScript Language: Expressions
+
13.1
Identifiers
13.1.1
SS: Early Errors
13.1.2
SS: StringValue
13.1.3
RS: Evaluation
+
13.2
Primary Expression
+
13.2.1
The
this
Keyword
13.2.1.1
RS: Evaluation
13.2.2
Identifier Reference
+
13.2.3
Literals
13.2.3.1
RS: Evaluation
+
13.2.4
Array Initializer
13.2.4.1
RS: ArrayAccumulation
13.2.4.2
RS: Evaluation
+
13.2.5
Object Initializer
13.2.5.1
SS: Early Errors
13.2.5.2
SS: IsComputedPropertyKey
13.2.5.3
SS: PropertyNameList
13.2.5.4
RS: Evaluation
13.2.5.5
RS: PropertyDefinitionEvaluation
13.2.6
Function Defining Expressions
+
13.2.7
Regular Expression Literals
13.2.7.1
SS: Early Errors
13.2.7.2
SS: IsValidRegularExpressionLiteral (
literal
)
13.2.7.3
RS: Evaluation
+
13.2.8
Template Literals
13.2.8.1
SS: Early Errors
13.2.8.2
SS: TemplateStrings
13.2.8.3
SS: TemplateString (
templateToken
,
raw
)
13.2.8.4
GetTemplateObject (
templateLiteral
)
13.2.8.5
RS: SubstitutionEvaluation
13.2.8.6
RS: Evaluation
+
13.2.9
The Grouping Operator
13.2.9.1
SS: Early Errors
13.2.9.2
RS: Evaluation
+
13.3
Left-Hand-Side Expressions
+
13.3.1
Static Semantics
13.3.1.1
SS: Early Errors
+
13.3.2
Property Accessors
13.3.2.1
RS: Evaluation
13.3.3
EvaluatePropertyAccessWithExpressionKey (
baseValue
,
expression
,
strict
)
13.3.4
EvaluatePropertyAccessWithIdentifierKey (
baseValue
,
identifierName
,
strict
)
+
13.3.5
The
new
Operator
+
13.3.5.1
RS: Evaluation
13.3.5.1.1
EvaluateNew (
constructExpr
,
arguments
)
+
13.3.6
Function Calls
13.3.6.1
RS: Evaluation
13.3.6.2
EvaluateCall (
func
,
ref
,
arguments
,
tailPosition
)
+
13.3.7
The
super
Keyword
13.3.7.1
RS: Evaluation
13.3.7.2
GetSuperConstructor ( )
13.3.7.3
MakeSuperPropertyReference (
actualThis
,
propertyKey
,
strict
)
+
13.3.8
Argument Lists
13.3.8.1
RS: ArgumentListEvaluation
+
13.3.9
Optional Chains
13.3.9.1
RS: Evaluation
13.3.9.2
RS: ChainEvaluation
+
13.3.10
Import Calls
13.3.10.1
RS: Evaluation
13.3.10.2
EvaluateImportCall (
specifierExpression
[ ,
optionsExpression
] )
13.3.10.3
ContinueDynamicImport (
promiseCapability
,
moduleCompletion
)
+
13.3.11
Tagged Templates
13.3.11.1
RS: Evaluation
+
13.3.12
Meta Properties
+
13.3.12.1
RS: Evaluation
13.3.12.1.1
HostGetImportMetaProperties (
moduleRecord
)
13.3.12.1.2
HostFinalizeImportMeta (
importMeta
,
moduleRecord
)
+
13.4
Update Expressions
13.4.1
SS: Early Errors
+
13.4.2
Postfix Increment Operator
13.4.2.1
RS: Evaluation
+
13.4.3
Postfix Decrement Operator
13.4.3.1
RS: Evaluation
+
13.4.4
Prefix Increment Operator
13.4.4.1
RS: Evaluation
+
13.4.5
Prefix Decrement Operator
13.4.5.1
RS: Evaluation
+
13.5
Unary Operators
+
13.5.1
The
delete
Operator
13.5.1.1
SS: Early Errors
13.5.1.2
RS: Evaluation
+
13.5.2
The
void
Operator
13.5.2.1
RS: Evaluation
+
13.5.3
The
typeof
Operator
13.5.3.1
RS: Evaluation
+
13.5.4
Unary
+
Operator
13.5.4.1
RS: Evaluation
+
13.5.5
Unary
-
Operator
13.5.5.1
RS: Evaluation
+
13.5.6
Bitwise NOT Operator (
~
)
13.5.6.1
RS: Evaluation
+
13.5.7
Logical NOT Operator (
!
)
13.5.7.1
RS: Evaluation
+
13.6
Exponentiation Operator
13.6.1
RS: Evaluation
+
13.7
Multiplicative Operators
13.7.1
RS: Evaluation
+
13.8
Additive Operators
+
13.8.1
The Addition Operator (
+
)
13.8.1.1
RS: Evaluation
+
13.8.2
The Subtraction Operator (
-
)
13.8.2.1
RS: Evaluation
+
13.9
Bitwise Shift Operators
+
13.9.1
The Left Shift Operator (
<<
)
13.9.1.1
RS: Evaluation
+
13.9.2
The Signed Right Shift Operator (
>>
)
13.9.2.1
RS: Evaluation
+