Movatterモバイル変換


[0]ホーム

URL:


Pins
Table of Contents
  1. Introduction
  2. 1 Scope
  3. +2 Conformance
    1. 2.1 Example Normative Optional Clause Heading
    2. 2.2 Example Legacy Clause Heading
    3. 2.3 Example Legacy Normative Optional Clause Heading
  4. 3 Normative References
  5. +4 Overview
    1. 4.1 Web Scripting
    2. 4.2 Hosts and Implementations
    3. +4.3 ECMAScript Overview
      1. 4.3.1 Objects
      2. 4.3.2 The Strict Variant of ECMAScript
    4. +4.4 Terms and Definitions
      1. 4.4.1 implementation-approximated
      2. 4.4.2 implementation-defined
      3. 4.4.3 host-defined
      4. 4.4.4 type
      5. 4.4.5 primitive value
      6. 4.4.6 object
      7. 4.4.7 constructor
      8. 4.4.8 prototype
      9. 4.4.9 ordinary object
      10. 4.4.10 exotic object
      11. 4.4.11 standard object
      12. 4.4.12 built-in object
      13. 4.4.13 undefined value
      14. 4.4.14 Undefined type
      15. 4.4.15 null value
      16. 4.4.16 Null type
      17. 4.4.17 Boolean value
      18. 4.4.18 Boolean type
      19. 4.4.19 Boolean object
      20. 4.4.20 String value
      21. 4.4.21 String type
      22. 4.4.22 String object
      23. 4.4.23 Number value
      24. 4.4.24 Number type
      25. 4.4.25 Number object
      26. 4.4.26 Infinity
      27. 4.4.27 NaN
      28. 4.4.28 BigInt value
      29. 4.4.29 BigInt type
      30. 4.4.30 BigInt object
      31. 4.4.31 Symbol value
      32. 4.4.32 Symbol type
      33. 4.4.33 Symbol object
      34. 4.4.34 function
      35. 4.4.35 built-in function
      36. 4.4.36 built-in constructor
      37. 4.4.37 property
      38. 4.4.38 method
      39. 4.4.39 built-in method
      40. 4.4.40 attribute
      41. 4.4.41 own property
      42. 4.4.42 inherited property
    5. 4.5 Organization of This Specification
  6. +5 Notational Conventions
    1. +5.1 Syntactic and Lexical Grammars
      1. 5.1.1 Context-Free Grammars
      2. 5.1.2 The Lexical and RegExp Grammars
      3. 5.1.3 The Numeric String Grammar
      4. 5.1.4 The Syntactic Grammar
      5. +5.1.5 Grammar Notation
        1. 5.1.5.1 Terminal Symbols
        2. 5.1.5.2 Nonterminal Symbols and Productions
        3. 5.1.5.3 Optional Symbols
        4. 5.1.5.4 Grammatical Parameters
        5. 5.1.5.5 one of
        6. 5.1.5.6 [empty]
        7. 5.1.5.7 Lookahead Restrictions
        8. 5.1.5.8 [noLineTerminator here]
        9. 5.1.5.9 but not
        10. 5.1.5.10 Descriptive Phrases
    2. +5.2 Algorithm Conventions
      1. 5.2.1 Abstract Operations
      2. 5.2.2 Syntax-Directed Operations
      3. +5.2.3 Runtime Semantics
        1. 5.2.3.1 Completion (completionRecord )
        2. 5.2.3.2 Throw an Exception
        3. 5.2.3.3 ReturnIfAbrupt
        4. 5.2.3.4 ReturnIfAbrupt Shorthands
        5. 5.2.3.5 Implicit Normal Completion
      4. 5.2.4 Static Semantics
      5. 5.2.5 Mathematical Operations
      6. 5.2.6 Value Notation
      7. 5.2.7 Identity
  7. +6 ECMAScript Data Types and Values
    1. +6.1 ECMAScript Language Types
      1. 6.1.1 The Undefined Type
      2. 6.1.2 The Null Type
      3. 6.1.3 The Boolean Type
      4. +6.1.4 The String Type
        1. 6.1.4.1 StringIndexOf (string,searchValue,fromIndex )
        2. 6.1.4.2 StringLastIndexOf (string,searchValue,fromIndex )
      5. +6.1.5 The Symbol Type
        1. 6.1.5.1 Well-Known Symbols
      6. +6.1.6 Numeric Types
        1. +6.1.6.1 The Number Type
          1. 6.1.6.1.1 Number::unaryMinus (x )
          2. 6.1.6.1.2 Number::bitwiseNOT (x )
          3. 6.1.6.1.3 Number::exponentiate (base,exponent )
          4. 6.1.6.1.4 Number::multiply (x,y )
          5. 6.1.6.1.5 Number::divide (x,y )
          6. 6.1.6.1.6 Number::remainder (n,d )
          7. 6.1.6.1.7 Number::add (x,y )
          8. 6.1.6.1.8 Number::subtract (x,y )
          9. 6.1.6.1.9 Number::leftShift (x,y )
          10. 6.1.6.1.10 Number::signedRightShift (x,y )
          11. 6.1.6.1.11 Number::unsignedRightShift (x,y )
          12. 6.1.6.1.12 Number::lessThan (x,y )
          13. 6.1.6.1.13 Number::equal (x,y )
          14. 6.1.6.1.14 Number::sameValue (x,y )
          15. 6.1.6.1.15 Number::sameValueZero (x,y )
          16. 6.1.6.1.16 NumberBitwiseOp (op,x,y )
          17. 6.1.6.1.17 Number::bitwiseAND (x,y )
          18. 6.1.6.1.18 Number::bitwiseXOR (x,y )
          19. 6.1.6.1.19 Number::bitwiseOR (x,y )
          20. 6.1.6.1.20 Number::toString (x,radix )
        2. +6.1.6.2 The BigInt Type
          1. 6.1.6.2.1 BigInt::unaryMinus (x )
          2. 6.1.6.2.2 BigInt::bitwiseNOT (x )
          3. 6.1.6.2.3 BigInt::exponentiate (base,exponent )
          4. 6.1.6.2.4 BigInt::multiply (x,y )
          5. 6.1.6.2.5 BigInt::divide (x,y )
          6. 6.1.6.2.6 BigInt::remainder (n,d )
          7. 6.1.6.2.7 BigInt::add (x,y )
          8. 6.1.6.2.8 BigInt::subtract (x,y )
          9. 6.1.6.2.9 BigInt::leftShift (x,y )
          10. 6.1.6.2.10 BigInt::signedRightShift (x,y )
          11. 6.1.6.2.11 BigInt::unsignedRightShift (x,y )
          12. 6.1.6.2.12 BigInt::lessThan (x,y )
          13. 6.1.6.2.13 BigInt::equal (x,y )
          14. 6.1.6.2.14 BinaryAnd (x,y )
          15. 6.1.6.2.15 BinaryOr (x,y )
          16. 6.1.6.2.16 BinaryXor (x,y )
          17. 6.1.6.2.17 BigIntBitwiseOp (op,x,y )
          18. 6.1.6.2.18 BigInt::bitwiseAND (x,y )
          19. 6.1.6.2.19 BigInt::bitwiseXOR (x,y )
          20. 6.1.6.2.20 BigInt::bitwiseOR (x,y )
          21. 6.1.6.2.21 BigInt::toString (x,radix )
      7. +6.1.7 The Object Type
        1. 6.1.7.1 Property Attributes
        2. 6.1.7.2 Object Internal Methods and Internal Slots
        3. 6.1.7.3 Invariants of the Essential Internal Methods
        4. 6.1.7.4 Well-Known Intrinsic Objects
    2. +6.2 ECMAScript Specification Types
      1. 6.2.1 The Enum Specification Type
      2. 6.2.2 The List and Record Specification Types
      3. 6.2.3 The Set and Relation Specification Types
      4. +6.2.4 The Completion Record Specification Type
        1. 6.2.4.1 NormalCompletion (value )
        2. 6.2.4.2 ThrowCompletion (value )
        3. 6.2.4.3 ReturnCompletion (value )
        4. 6.2.4.4 UpdateEmpty (completionRecord,value )
      5. +6.2.5 The Reference Record Specification Type
        1. 6.2.5.1 IsPropertyReference (V )
        2. 6.2.5.2 IsUnresolvableReference (V )
        3. 6.2.5.3 IsSuperReference (V )
        4. 6.2.5.4 IsPrivateReference (V )
        5. 6.2.5.5 GetValue (V )
        6. 6.2.5.6 PutValue (V,W )
        7. 6.2.5.7 GetThisValue (V )
        8. 6.2.5.8 InitializeReferencedBinding (V,W )
        9. 6.2.5.9 MakePrivateReference (baseValue,privateIdentifier )
      6. +6.2.6 The Property Descriptor Specification Type
        1. 6.2.6.1 IsAccessorDescriptor (Desc )
        2. 6.2.6.2 IsDataDescriptor (Desc )
        3. 6.2.6.3 IsGenericDescriptor (Desc )
        4. 6.2.6.4 FromPropertyDescriptor (Desc )
        5. 6.2.6.5 ToPropertyDescriptor (Obj )
        6. 6.2.6.6 CompletePropertyDescriptor (Desc )
      7. 6.2.7 The Environment Record Specification Type
      8. 6.2.8 The Abstract Closure Specification Type
      9. +6.2.9 Data Blocks
        1. 6.2.9.1 CreateByteDataBlock (size )
        2. 6.2.9.2 CreateSharedByteDataBlock (size )
        3. 6.2.9.3 CopyDataBlockBytes (toBlock,toIndex,fromBlock,fromIndex,count )
      10. 6.2.10 The PrivateElement Specification Type
      11. 6.2.11 The ClassFieldDefinition Record Specification Type
      12. 6.2.12 Private Names
      13. 6.2.13 The ClassStaticBlockDefinition Record Specification Type
  8. +7 Abstract Operations
    1. +7.1 Type Conversion
      1. +7.1.1 ToPrimitive (input [ ,preferredType ] )
        1. 7.1.1.1 OrdinaryToPrimitive (O,hint )
      2. 7.1.2 ToBoolean (argument )
      3. 7.1.3 ToNumeric (value )
      4. +7.1.4 ToNumber (argument )
        1. +7.1.4.1 ToNumber Applied to the String Type
          1. 7.1.4.1.1 StringToNumber (str )
          2. 7.1.4.1.2 RS: StringNumericValue
          3. 7.1.4.1.3 RoundMVResult (n )
      5. 7.1.5 ToIntegerOrInfinity (argument )
      6. 7.1.6 ToInt32 (argument )
      7. 7.1.7 ToUint32 (argument )
      8. 7.1.8 ToInt16 (argument )
      9. 7.1.9 ToUint16 (argument )
      10. 7.1.10 ToInt8 (argument )
      11. 7.1.11 ToUint8 (argument )
      12. 7.1.12 ToUint8Clamp (argument )
      13. 7.1.13 ToBigInt (argument )
      14. +7.1.14 StringToBigInt (str )
        1. 7.1.14.1 StringIntegerLiteral Grammar
        2. 7.1.14.2 RS: MV
      15. 7.1.15 ToBigInt64 (argument )
      16. 7.1.16 ToBigUint64 (argument )
      17. 7.1.17 ToString (argument )
      18. 7.1.18 ToObject (argument )
      19. 7.1.19 ToPropertyKey (argument )
      20. 7.1.20 ToLength (argument )
      21. 7.1.21 CanonicalNumericIndexString (argument )
      22. 7.1.22 ToIndex (value )
    2. +7.2 Testing and Comparison Operations
      1. 7.2.1 RequireObjectCoercible (argument )
      2. 7.2.2 IsArray (argument )
      3. 7.2.3 IsCallable (argument )
      4. 7.2.4 IsConstructor (argument )
      5. 7.2.5 IsExtensible (O )
      6. 7.2.6 IsRegExp (argument )
      7. 7.2.7 SS: IsStringWellFormedUnicode (string )
      8. 7.2.8 SameType (x,y )
      9. 7.2.9 SameValue (x,y )
      10. 7.2.10 SameValueZero (x,y )
      11. 7.2.11 SameValueNonNumber (x,y )
      12. 7.2.12 IsLessThan (x,y,LeftFirst )
      13. 7.2.13 IsLooselyEqual (x,y )
      14. 7.2.14 IsStrictlyEqual (x,y )
    3. +7.3 Operations on Objects
      1. 7.3.1 MakeBasicObject (internalSlotsList )
      2. 7.3.2 Get (O,P )
      3. 7.3.3 GetV (V,P )
      4. 7.3.4 Set (O,P,V,Throw )
      5. 7.3.5 CreateDataProperty (O,P,V )
      6. 7.3.6 CreateDataPropertyOrThrow (O,P,V )
      7. 7.3.7 CreateNonEnumerableDataPropertyOrThrow (O,P,V )
      8. 7.3.8 DefinePropertyOrThrow (O,P,desc )
      9. 7.3.9 DeletePropertyOrThrow (O,P )
      10. 7.3.10 GetMethod (V,P )
      11. 7.3.11 HasProperty (O,P )
      12. 7.3.12 HasOwnProperty (O,P )
      13. 7.3.13 Call (F,V [ ,argumentsList ] )
      14. 7.3.14 Construct (F [ ,argumentsList [ ,newTarget ] ] )
      15. 7.3.15 SetIntegrityLevel (O,level )
      16. 7.3.16 TestIntegrityLevel (O,level )
      17. 7.3.17 CreateArrayFromList (elements )
      18. 7.3.18 LengthOfArrayLike (obj )
      19. 7.3.19 CreateListFromArrayLike (obj [ ,validElementTypes ] )
      20. 7.3.20 Invoke (V,P [ ,argumentsList ] )
      21. 7.3.21 OrdinaryHasInstance (C,O )
      22. 7.3.22 SpeciesConstructor (O,defaultConstructor )
      23. 7.3.23 EnumerableOwnProperties (O,kind )
      24. 7.3.24 GetFunctionRealm (obj )
      25. 7.3.25 CopyDataProperties (target,source,excludedItems )
      26. 7.3.26 PrivateElementFind (O,P )
      27. 7.3.27 PrivateFieldAdd (O,P,value )
      28. 7.3.28 PrivateMethodOrAccessorAdd (O,method )
      29. 7.3.29 HostEnsureCanAddPrivateElement (O )
      30. 7.3.30 PrivateGet (O,P )
      31. 7.3.31 PrivateSet (O,P,value )
      32. 7.3.32 DefineField (receiver,fieldRecord )
      33. 7.3.33 InitializeInstanceElements (O,constructor )
      34. 7.3.34 AddValueToKeyedGroup (groups,key,value )
      35. 7.3.35 GroupBy (items,callback,keyCoercion )
      36. 7.3.36 GetOptionsObject (options )
      37. 7.3.37 SetterThatIgnoresPrototypeProperties (thisValue,home,p,v )
    4. +7.4 Operations on Iterator Objects
      1. 7.4.1 Iterator Records
      2. 7.4.2 GetIteratorDirect (obj )
      3. 7.4.3 GetIteratorFromMethod (obj,method )
      4. 7.4.4 GetIterator (obj,kind )
      5. 7.4.5 GetIteratorFlattenable (obj,primitiveHandling )
      6. 7.4.6 IteratorNext (iteratorRecord [ ,value ] )
      7. 7.4.7 IteratorComplete (iteratorResult )
      8. 7.4.8 IteratorValue (iteratorResult )
      9. 7.4.9 IteratorStep (iteratorRecord )
      10. 7.4.10 IteratorStepValue (iteratorRecord )
      11. 7.4.11 IteratorClose (iteratorRecord,completion )
      12. 7.4.12 IfAbruptCloseIterator (value,iteratorRecord )
      13. 7.4.13 AsyncIteratorClose (iteratorRecord,completion )
      14. 7.4.14 CreateIteratorResultObject (value,done )
      15. 7.4.15 CreateListIteratorRecord (list )
      16. 7.4.16 IteratorToList (iteratorRecord )
  9. +8 Syntax-Directed Operations
    1. 8.1 RS: Evaluation
    2. +8.2 Scope Analysis
      1. 8.2.1 SS: BoundNames
      2. 8.2.2 SS: DeclarationPart
      3. 8.2.3 SS: IsConstantDeclaration
      4. 8.2.4 SS: LexicallyDeclaredNames
      5. 8.2.5 SS: LexicallyScopedDeclarations
      6. 8.2.6 SS: VarDeclaredNames
      7. 8.2.7 SS: VarScopedDeclarations
      8. 8.2.8 SS: TopLevelLexicallyDeclaredNames
      9. 8.2.9 SS: TopLevelLexicallyScopedDeclarations
      10. 8.2.10 SS: TopLevelVarDeclaredNames
      11. 8.2.11 SS: TopLevelVarScopedDeclarations
    3. +8.3 Labels
      1. 8.3.1 SS: ContainsDuplicateLabels
      2. 8.3.2 SS: ContainsUndefinedBreakTarget
      3. 8.3.3 SS: ContainsUndefinedContinueTarget
    4. +8.4 Function Name Inference
      1. 8.4.1 SS: HasName
      2. 8.4.2 SS: IsFunctionDefinition
      3. 8.4.3 SS: IsAnonymousFunctionDefinition (expr )
      4. 8.4.4 SS: IsIdentifierRef
      5. 8.4.5 RS: NamedEvaluation
    5. +8.5 Contains
      1. 8.5.1 SS: Contains
      2. 8.5.2 SS: ComputedPropertyContains
    6. +8.6 Miscellaneous
      1. 8.6.1 RS: InstantiateFunctionObject
      2. +8.6.2 RS: BindingInitialization
        1. 8.6.2.1 InitializeBoundName (name,value,environment )
      3. 8.6.3 RS: IteratorBindingInitialization
      4. 8.6.4 SS: AssignmentTargetType
      5. 8.6.5 SS: PropName
  10. +9 Executable Code and Execution Contexts
    1. +9.1 Environment Records
      1. +9.1.1 The Environment Record Type Hierarchy
        1. +9.1.1.1 Declarative Environment Records
          1. 9.1.1.1.1 HasBinding (N )
          2. 9.1.1.1.2 CreateMutableBinding (N,D )
          3. 9.1.1.1.3 CreateImmutableBinding (N,S )
          4. 9.1.1.1.4 InitializeBinding (N,V )
          5. 9.1.1.1.5 SetMutableBinding (N,V,S )
          6. 9.1.1.1.6 GetBindingValue (N,S )
          7. 9.1.1.1.7 DeleteBinding (N )
          8. 9.1.1.1.8 HasThisBinding ( )
          9. 9.1.1.1.9 HasSuperBinding ( )
          10. 9.1.1.1.10 WithBaseObject ( )
        2. +9.1.1.2 Object Environment Records
          1. 9.1.1.2.1 HasBinding (N )
          2. 9.1.1.2.2 CreateMutableBinding (N,D )
          3. 9.1.1.2.3 CreateImmutableBinding (N,S )
          4. 9.1.1.2.4 InitializeBinding (N,V )
          5. 9.1.1.2.5 SetMutableBinding (N,V,S )
          6. 9.1.1.2.6 GetBindingValue (N,S )
          7. 9.1.1.2.7 DeleteBinding (N )
          8. 9.1.1.2.8 HasThisBinding ( )
          9. 9.1.1.2.9 HasSuperBinding ( )
          10. 9.1.1.2.10 WithBaseObject ( )
        3. +9.1.1.3 Function Environment Records
          1. 9.1.1.3.1 BindThisValue (envRec,V )
          2. 9.1.1.3.2 HasThisBinding ( )
          3. 9.1.1.3.3 HasSuperBinding ( )
          4. 9.1.1.3.4 GetThisBinding ( )
          5. 9.1.1.3.5 GetSuperBase (envRec )
        4. +9.1.1.4 Global Environment Records
          1. 9.1.1.4.1 HasBinding (N )
          2. 9.1.1.4.2 CreateMutableBinding (N,D )
          3. 9.1.1.4.3 CreateImmutableBinding (N,S )
          4. 9.1.1.4.4 InitializeBinding (N,V )
          5. 9.1.1.4.5 SetMutableBinding (N,V,S )
          6. 9.1.1.4.6 GetBindingValue (N,S )
          7. 9.1.1.4.7 DeleteBinding (N )
          8. 9.1.1.4.8 HasThisBinding ( )
          9. 9.1.1.4.9 HasSuperBinding ( )
          10. 9.1.1.4.10 WithBaseObject ( )
          11. 9.1.1.4.11 GetThisBinding ( )
          12. 9.1.1.4.12 HasLexicalDeclaration (envRec,N )
          13. 9.1.1.4.13 HasRestrictedGlobalProperty (envRec,N )
          14. 9.1.1.4.14 CanDeclareGlobalVar (envRec,N )
          15. 9.1.1.4.15 CanDeclareGlobalFunction (envRec,N )
          16. 9.1.1.4.16 CreateGlobalVarBinding (envRec,N,D )
          17. 9.1.1.4.17 CreateGlobalFunctionBinding (envRec,N,V,D )
        5. +9.1.1.5 Module Environment Records
          1. 9.1.1.5.1 GetBindingValue (N,S )
          2. 9.1.1.5.2 DeleteBinding (N )
          3. 9.1.1.5.3 HasThisBinding ( )
          4. 9.1.1.5.4 GetThisBinding ( )
          5. 9.1.1.5.5 CreateImportBinding (envRec,N,M,N2 )
      2. +9.1.2 Environment Record Operations
        1. 9.1.2.1 GetIdentifierReference (env,name,strict )
        2. 9.1.2.2 NewDeclarativeEnvironment (E )
        3. 9.1.2.3 NewObjectEnvironment (O,W,E )
        4. 9.1.2.4 NewFunctionEnvironment (F,newTarget )
        5. 9.1.2.5 NewGlobalEnvironment (G,thisValue )
        6. 9.1.2.6 NewModuleEnvironment (E )
    2. +9.2 PrivateEnvironment Records
      1. +9.2.1 PrivateEnvironment Record Operations
        1. 9.2.1.1 NewPrivateEnvironment (outerPrivateEnv )
        2. 9.2.1.2 ResolvePrivateIdentifier (privateEnv,identifier )
    3. +9.3 Realms
      1. 9.3.1 InitializeHostDefinedRealm ( )
      2. 9.3.2 CreateIntrinsics (realmRec )
      3. 9.3.3 SetDefaultGlobalBindings (realmRec )
    4. +9.4 Execution Contexts
      1. 9.4.1 GetActiveScriptOrModule ( )
      2. 9.4.2 ResolveBinding (name [ ,env ] )
      3. 9.4.3 GetThisEnvironment ( )
      4. 9.4.4 ResolveThisBinding ( )
      5. 9.4.5 GetNewTarget ( )
      6. 9.4.6 GetGlobalObject ( )
    5. +9.5 Jobs and Host Operations to Enqueue Jobs
      1. 9.5.1 JobCallback Records
      2. 9.5.2 HostMakeJobCallback (callback )
      3. 9.5.3 HostCallJobCallback (jobCallback,V,argumentsList )
      4. 9.5.4 HostEnqueueGenericJob (job,realm )
      5. 9.5.5 HostEnqueuePromiseJob (job,realm )
      6. 9.5.6 HostEnqueueTimeoutJob (timeoutJob,realm,milliseconds )
    6. +9.6 Agents
      1. 9.6.1 AgentSignifier ( )
      2. 9.6.2 AgentCanSuspend ( )
      3. 9.6.3 IncrementModuleAsyncEvaluationCount ( )
    7. 9.7 Agent Clusters
    8. 9.8 Forward Progress
    9. +9.9 Processing Model of WeakRef and FinalizationRegistry Targets
      1. 9.9.1 Objectives
      2. 9.9.2 Liveness
      3. 9.9.3 Execution
      4. +9.9.4 Host Hooks
        1. 9.9.4.1 HostEnqueueFinalizationRegistryCleanupJob (finalizationRegistry )
    10. 9.10 ClearKeptObjects ( )
    11. 9.11 AddToKeptObjects (value )
    12. 9.12 CleanupFinalizationRegistry (finalizationRegistry )
    13. 9.13 CanBeHeldWeakly (v )
  11. +10 Ordinary and Exotic Objects Behaviours
    1. +10.1 Ordinary Object Internal Methods and Internal Slots
      1. +10.1.1[[GetPrototypeOf]] ( )
        1. 10.1.1.1 OrdinaryGetPrototypeOf (O )
      2. +10.1.2[[SetPrototypeOf]] (V )
        1. 10.1.2.1 OrdinarySetPrototypeOf (O,V )
      3. +10.1.3[[IsExtensible]] ( )
        1. 10.1.3.1 OrdinaryIsExtensible (O )
      4. +10.1.4[[PreventExtensions]] ( )
        1. 10.1.4.1 OrdinaryPreventExtensions (O )
      5. +10.1.5[[GetOwnProperty]] (P )
        1. 10.1.5.1 OrdinaryGetOwnProperty (O,P )
      6. +10.1.6[[DefineOwnProperty]] (P,Desc )
        1. 10.1.6.1 OrdinaryDefineOwnProperty (O,P,Desc )
        2. 10.1.6.2 IsCompatiblePropertyDescriptor (Extensible,Desc,Current )
        3. 10.1.6.3 ValidateAndApplyPropertyDescriptor (O,P,extensible,Desc,current )
      7. +10.1.7[[HasProperty]] (P )
        1. 10.1.7.1 OrdinaryHasProperty (O,P )
      8. +10.1.8[[Get]] (P,Receiver )
        1. 10.1.8.1 OrdinaryGet (O,P,Receiver )
      9. +10.1.9[[Set]] (P,V,Receiver )
        1. 10.1.9.1 OrdinarySet (O,P,V,Receiver )
        2. 10.1.9.2 OrdinarySetWithOwnDescriptor (O,P,V,Receiver,ownDesc )
      10. +10.1.10[[Delete]] (P )
        1. 10.1.10.1 OrdinaryDelete (O,P )
      11. +10.1.11[[OwnPropertyKeys]] ( )
        1. 10.1.11.1 OrdinaryOwnPropertyKeys (O )
      12. 10.1.12 OrdinaryObjectCreate (proto [ ,additionalInternalSlotsList ] )
      13. 10.1.13 OrdinaryCreateFromConstructor (constructor,intrinsicDefaultProto [ ,internalSlotsList ] )
      14. 10.1.14 GetPrototypeFromConstructor (constructor,intrinsicDefaultProto )
      15. 10.1.15 RequireInternalSlot (O,internalSlot )
    2. +10.2 ECMAScript Function Objects
      1. +10.2.1[[Call]] (thisArgument,argumentsList )
        1. 10.2.1.1 PrepareForOrdinaryCall (F,newTarget )
        2. 10.2.1.2 OrdinaryCallBindThis (F,calleeContext,thisArgument )
        3. 10.2.1.3 RS: EvaluateBody
        4. 10.2.1.4 OrdinaryCallEvaluateBody (F,argumentsList )
      2. 10.2.2[[Construct]] (argumentsList,newTarget )
      3. 10.2.3 OrdinaryFunctionCreate (functionPrototype,sourceText,ParameterList,Body,thisMode,env,privateEnv )
      4. +10.2.4 AddRestrictedFunctionProperties (F,realm )
        1. 10.2.4.1 %ThrowTypeError% ( )
      5. 10.2.5 MakeConstructor (F [ ,writablePrototype [ ,prototype ] ] )
      6. 10.2.6 MakeClassConstructor (F )
      7. 10.2.7 MakeMethod (F,homeObject )
      8. 10.2.8 DefineMethodProperty (homeObject,key,closure,enumerable )
      9. 10.2.9 SetFunctionName (F,name [ ,prefix ] )
      10. 10.2.10 SetFunctionLength (F,length )
      11. 10.2.11 FunctionDeclarationInstantiation (func,argumentsList )
    3. +10.3 Built-in Function Objects
      1. 10.3.1[[Call]] (thisArgument,argumentsList )
      2. 10.3.2[[Construct]] (argumentsList,newTarget )
      3. 10.3.3 BuiltinCallOrConstruct (F,thisArgument,argumentsList,newTarget )
      4. 10.3.4 CreateBuiltinFunction (behaviour,length,name,additionalInternalSlotsList [ ,realm [ ,prototype [ ,prefix ] ] ] )
    4. +10.4 Built-in Exotic Object Internal Methods and Slots
      1. +10.4.1 Bound Function Exotic Objects
        1. 10.4.1.1[[Call]] (thisArgument,argumentsList )
        2. 10.4.1.2[[Construct]] (argumentsList,newTarget )
        3. 10.4.1.3 BoundFunctionCreate (targetFunction,boundThis,boundArgs )
      2. +10.4.2 Array Exotic Objects
        1. 10.4.2.1[[DefineOwnProperty]] (P,Desc )
        2. 10.4.2.2 ArrayCreate (length [ ,proto ] )
        3. 10.4.2.3 ArraySpeciesCreate (originalArray,length )
        4. 10.4.2.4 ArraySetLength (A,Desc )
      3. +10.4.3 String Exotic Objects
        1. 10.4.3.1[[GetOwnProperty]] (P )
        2. 10.4.3.2[[DefineOwnProperty]] (P,Desc )
        3. 10.4.3.3[[OwnPropertyKeys]] ( )
        4. 10.4.3.4 StringCreate (value,prototype )
        5. 10.4.3.5 StringGetOwnProperty (S,P )
      4. +10.4.4 Arguments Exotic Objects
        1. 10.4.4.1[[GetOwnProperty]] (P )
        2. 10.4.4.2[[DefineOwnProperty]] (P,Desc )
        3. 10.4.4.3[[Get]] (P,Receiver )
        4. 10.4.4.4[[Set]] (P,V,Receiver )
        5. 10.4.4.5[[Delete]] (P )
        6. 10.4.4.6 CreateUnmappedArgumentsObject (argumentsList )
        7. +10.4.4.7 CreateMappedArgumentsObject (func,formals,argumentsList,env )
          1. 10.4.4.7.1 MakeArgGetter (name,env )
          2. 10.4.4.7.2 MakeArgSetter (name,env )
      5. +10.4.5 TypedArray Exotic Objects
        1. 10.4.5.1[[PreventExtensions]] ( )
        2. 10.4.5.2[[GetOwnProperty]] (P )
        3. 10.4.5.3[[HasProperty]] (P )
        4. 10.4.5.4[[DefineOwnProperty]] (P,Desc )
        5. 10.4.5.5[[Get]] (P,Receiver )
        6. 10.4.5.6[[Set]] (P,V,Receiver )
        7. 10.4.5.7[[Delete]] (P )
        8. 10.4.5.8[[OwnPropertyKeys]] ( )
        9. 10.4.5.9 TypedArray With Buffer Witness Records
        10. 10.4.5.10 MakeTypedArrayWithBufferWitnessRecord (obj,order )
        11. 10.4.5.11 TypedArrayCreate (prototype )
        12. 10.4.5.12 TypedArrayByteLength (taRecord )
        13. 10.4.5.13 TypedArrayLength (taRecord )
        14. 10.4.5.14 IsTypedArrayOutOfBounds (taRecord )
        15. 10.4.5.15 IsTypedArrayFixedLength (O )
        16. 10.4.5.16 IsValidIntegerIndex (O,index )
        17. 10.4.5.17 TypedArrayGetElement (O,index )
        18. 10.4.5.18 TypedArraySetElement (O,index,value )
        19. 10.4.5.19 IsArrayBufferViewOutOfBounds (O )
      6. +10.4.6 Module Namespace Exotic Objects
        1. 10.4.6.1[[GetPrototypeOf]] ( )
        2. 10.4.6.2[[SetPrototypeOf]] (V )
        3. 10.4.6.3[[IsExtensible]] ( )
        4. 10.4.6.4[[PreventExtensions]] ( )
        5. 10.4.6.5[[GetOwnProperty]] (P )
        6. 10.4.6.6[[DefineOwnProperty]] (P,Desc )
        7. 10.4.6.7[[HasProperty]] (P )
        8. 10.4.6.8[[Get]] (P,Receiver )
        9. 10.4.6.9[[Set]] (P,V,Receiver )
        10. 10.4.6.10[[Delete]] (P )
        11. 10.4.6.11[[OwnPropertyKeys]] ( )
        12. 10.4.6.12 ModuleNamespaceCreate (module,exports )
      7. +10.4.7 Immutable Prototype Exotic Objects
        1. 10.4.7.1[[SetPrototypeOf]] (V )
        2. 10.4.7.2 SetImmutablePrototype (O,V )
    5. +10.5 Proxy Object Internal Methods and Internal Slots
      1. 10.5.1[[GetPrototypeOf]] ( )
      2. 10.5.2[[SetPrototypeOf]] (V )
      3. 10.5.3[[IsExtensible]] ( )
      4. 10.5.4[[PreventExtensions]] ( )
      5. 10.5.5[[GetOwnProperty]] (P )
      6. 10.5.6[[DefineOwnProperty]] (P,Desc )
      7. 10.5.7[[HasProperty]] (P )
      8. 10.5.8[[Get]] (P,Receiver )
      9. 10.5.9[[Set]] (P,V,Receiver )
      10. 10.5.10[[Delete]] (P )
      11. 10.5.11[[OwnPropertyKeys]] ( )
      12. 10.5.12[[Call]] (thisArgument,argumentsList )
      13. 10.5.13[[Construct]] (argumentsList,newTarget )
      14. 10.5.14 ValidateNonRevokedProxy (proxy )
      15. 10.5.15 ProxyCreate (target,handler )
  12. +11 ECMAScript Language: Source Text
    1. +11.1 Source Text
      1. 11.1.1 SS: UTF16EncodeCodePoint (cp )
      2. 11.1.2 SS: CodePointsToString (text )
      3. 11.1.3 SS: UTF16SurrogatePairToCodePoint (lead,trail )
      4. 11.1.4 SS: CodePointAt (string,position )
      5. 11.1.5 SS: StringToCodePoints (string )
      6. 11.1.6 SS: ParseText (sourceText,goalSymbol )
    2. +11.2 Types of Source Code
      1. 11.2.1 Directive Prologues and the Use Strict Directive
      2. +11.2.2 Strict Mode Code
        1. 11.2.2.1 SS: IsStrict (node )
      3. 11.2.3 Non-ECMAScript Functions
  13. +12 ECMAScript Language: Lexical Grammar
    1. 12.1 Unicode Format-Control Characters
    2. 12.2 White Space
    3. 12.3 Line Terminators
    4. 12.4 Comments
    5. 12.5 Hashbang Comments
    6. 12.6 Tokens
    7. +12.7 Names and Keywords
      1. +12.7.1 Identifier Names
        1. 12.7.1.1 SS: Early Errors
        2. 12.7.1.2 SS: IdentifierCodePoints
        3. 12.7.1.3 SS: IdentifierCodePoint
      2. 12.7.2 Keywords and Reserved Words
    8. 12.8 Punctuators
    9. +12.9 Literals
      1. 12.9.1 Null Literals
      2. 12.9.2 Boolean Literals
      3. +12.9.3 Numeric Literals
        1. 12.9.3.1 SS: Early Errors
        2. 12.9.3.2 SS: MV
        3. 12.9.3.3 SS: NumericValue
      4. +12.9.4 String Literals
        1. 12.9.4.1 SS: Early Errors
        2. 12.9.4.2 SS: SV
        3. 12.9.4.3 SS: MV
      5. +12.9.5 Regular Expression Literals
        1. 12.9.5.1 SS: BodyText
        2. 12.9.5.2 SS: FlagText
      6. +12.9.6 Template Literal Lexical Components
        1. 12.9.6.1 SS: TV
        2. 12.9.6.2 SS: TRV
    10. +12.10 Automatic Semicolon Insertion
      1. 12.10.1 Rules of Automatic Semicolon Insertion
      2. 12.10.2 Examples of Automatic Semicolon Insertion
      3. +12.10.3 Interesting Cases of Automatic Semicolon Insertion
        1. 12.10.3.1 Interesting Cases of Automatic Semicolon Insertion in Statement Lists
        2. +12.10.3.2 Cases of Automatic Semicolon Insertion and “[noLineTerminator here]”
          1. 12.10.3.2.1 List of Grammar Productions with Optional Operands and “[noLineTerminator here]”
  14. +13 ECMAScript Language: Expressions
    1. +13.1 Identifiers
      1. 13.1.1 SS: Early Errors
      2. 13.1.2 SS: StringValue
      3. 13.1.3 RS: Evaluation
    2. +13.2 Primary Expression
      1. +13.2.1 Thethis Keyword
        1. 13.2.1.1 RS: Evaluation
      2. 13.2.2 Identifier Reference
      3. +13.2.3 Literals
        1. 13.2.3.1 RS: Evaluation
      4. +13.2.4 Array Initializer
        1. 13.2.4.1 RS: ArrayAccumulation
        2. 13.2.4.2 RS: Evaluation
      5. +13.2.5 Object Initializer
        1. 13.2.5.1 SS: Early Errors
        2. 13.2.5.2 SS: IsComputedPropertyKey
        3. 13.2.5.3 SS: PropertyNameList
        4. 13.2.5.4 RS: Evaluation
        5. 13.2.5.5 RS: PropertyDefinitionEvaluation
      6. 13.2.6 Function Defining Expressions
      7. +13.2.7 Regular Expression Literals
        1. 13.2.7.1 SS: Early Errors
        2. 13.2.7.2 SS: IsValidRegularExpressionLiteral (literal )
        3. 13.2.7.3 RS: Evaluation
      8. +13.2.8 Template Literals
        1. 13.2.8.1 SS: Early Errors
        2. 13.2.8.2 SS: TemplateStrings
        3. 13.2.8.3 SS: TemplateString (templateToken,raw )
        4. 13.2.8.4 GetTemplateObject (templateLiteral )
        5. 13.2.8.5 RS: SubstitutionEvaluation
        6. 13.2.8.6 RS: Evaluation
      9. +13.2.9 The Grouping Operator
        1. 13.2.9.1 SS: Early Errors
        2. 13.2.9.2 RS: Evaluation
    3. +13.3 Left-Hand-Side Expressions
      1. +13.3.1 Static Semantics
        1. 13.3.1.1 SS: Early Errors
      2. +13.3.2 Property Accessors
        1. 13.3.2.1 RS: Evaluation
      3. 13.3.3 EvaluatePropertyAccessWithExpressionKey (baseValue,expression,strict )
      4. 13.3.4 EvaluatePropertyAccessWithIdentifierKey (baseValue,identifierName,strict )
      5. +13.3.5 Thenew Operator
        1. +13.3.5.1 RS: Evaluation
          1. 13.3.5.1.1 EvaluateNew (constructExpr,arguments )
      6. +13.3.6 Function Calls
        1. 13.3.6.1 RS: Evaluation
        2. 13.3.6.2 EvaluateCall (func,ref,arguments,tailPosition )
      7. +13.3.7 Thesuper Keyword
        1. 13.3.7.1 RS: Evaluation
        2. 13.3.7.2 GetSuperConstructor ( )
        3. 13.3.7.3 MakeSuperPropertyReference (actualThis,propertyKey,strict )
      8. +13.3.8 Argument Lists
        1. 13.3.8.1 RS: ArgumentListEvaluation
      9. +13.3.9 Optional Chains
        1. 13.3.9.1 RS: Evaluation
        2. 13.3.9.2 RS: ChainEvaluation
      10. +13.3.10 Import Calls
        1. 13.3.10.1 RS: Evaluation
        2. 13.3.10.2 EvaluateImportCall (specifierExpression [ ,optionsExpression ] )
        3. 13.3.10.3 ContinueDynamicImport (promiseCapability,moduleCompletion )
      11. +13.3.11 Tagged Templates
        1. 13.3.11.1 RS: Evaluation
      12. +13.3.12 Meta Properties
        1. +13.3.12.1 RS: Evaluation
          1. 13.3.12.1.1 HostGetImportMetaProperties (moduleRecord )
          2. 13.3.12.1.2 HostFinalizeImportMeta (importMeta,moduleRecord )
    4. +13.4 Update Expressions
      1. 13.4.1 SS: Early Errors
      2. +13.4.2 Postfix Increment Operator
        1. 13.4.2.1 RS: Evaluation
      3. +13.4.3 Postfix Decrement Operator
        1. 13.4.3.1 RS: Evaluation
      4. +13.4.4 Prefix Increment Operator
        1. 13.4.4.1 RS: Evaluation
      5. +13.4.5 Prefix Decrement Operator
        1. 13.4.5.1 RS: Evaluation
    5. +13.5 Unary Operators
      1. +13.5.1 Thedelete Operator
        1. 13.5.1.1 SS: Early Errors
        2. 13.5.1.2 RS: Evaluation
      2. +13.5.2 Thevoid Operator
        1. 13.5.2.1 RS: Evaluation
      3. +13.5.3 Thetypeof Operator
        1. 13.5.3.1 RS: Evaluation
      4. +13.5.4 Unary+ Operator
        1. 13.5.4.1 RS: Evaluation
      5. +13.5.5 Unary- Operator
        1. 13.5.5.1 RS: Evaluation
      6. +13.5.6 Bitwise NOT Operator (~ )
        1. 13.5.6.1 RS: Evaluation
      7. +13.5.7 Logical NOT Operator (! )
        1. 13.5.7.1 RS: Evaluation
    6. +13.6 Exponentiation Operator
      1. 13.6.1 RS: Evaluation
    7. +13.7 Multiplicative Operators
      1. 13.7.1 RS: Evaluation
    8. +13.8 Additive Operators
      1. +13.8.1 The Addition Operator (+ )
        1. 13.8.1.1 RS: Evaluation
      2. +13.8.2 The Subtraction Operator (- )
        1. 13.8.2.1 RS: Evaluation
    9. +13.9 Bitwise Shift Operators
      1. +13.9.1 The Left Shift Operator (<< )
        1. 13.9.1.1 RS: Evaluation
      2. +13.9.2 The Signed Right Shift Operator (>> )
        1. 13.9.2.1 RS: Evaluation
      3. +13.9.3 The Unsigned Right Shift Operator (>>> )
        1. 13.9.3.1 RS: Evaluation
    10. +13.10 Relational Operators
      1. 13.10.1 RS: Evaluation
      2. 13.10.2 InstanceofOperator (V,target )
    11. +13.11 Equality Operators
      1. 13.11.1 RS: Evaluation
    12. +13.12 Binary Bitwise Operators
      1. 13.12.1 RS: Evaluation
    13. +13.13 Binary Logical Operators
      1. 13.13.1 RS: Evaluation
    14. +13.14 Conditional Operator (? : )
      1. 13.14.1 RS: Evaluation
    15. +13.15 Assignment Operators
      1. 13.15.1 SS: Early Errors
      2. 13.15.2 RS: Evaluation
      3. 13.15.3 ApplyStringOrNumericBinaryOperator (lVal,opText,rVal )
      4. 13.15.4 EvaluateStringOrNumericBinaryExpression (leftOperand,opText,rightOperand )
      5. +13.15.5 Destructuring Assignment
        1. 13.15.5.1 SS: Early Errors
        2. 13.15.5.2 RS: DestructuringAssignmentEvaluation
        3. 13.15.5.3 RS: PropertyDestructuringAssignmentEvaluation
        4. 13.15.5.4 RS: RestDestructuringAssignmentEvaluation
        5. 13.15.5.5 RS: IteratorDestructuringAssignmentEvaluation
        6. 13.15.5.6 RS: KeyedDestructuringAssignmentEvaluation
    16. +13.16 Comma Operator (, )
      1. 13.16.1 RS: Evaluation
  15. +14 ECMAScript Language: Statements and Declarations
    1. +14.1 Statement Semantics
      1. 14.1.1 RS: Evaluation
    2. +14.2 Block
      1. 14.2.1 SS: Early Errors
      2. 14.2.2 RS: Evaluation
      3. 14.2.3 BlockDeclarationInstantiation (code,env )
    3. +14.3 Declarations and the Variable Statement
      1. +14.3.1 Let and Const Declarations
        1. 14.3.1.1 SS: Early Errors
        2. 14.3.1.2 RS: Evaluation
      2. +14.3.2 Variable Statement
        1. 14.3.2.1 RS: Evaluation
      3. +14.3.3 Destructuring Binding Patterns
        1. 14.3.3.1 RS: PropertyBindingInitialization
        2. 14.3.3.2 RS: RestBindingInitialization
        3. 14.3.3.3 RS: KeyedBindingInitialization
    4. +14.4 Empty Statement
      1. 14.4.1 RS: Evaluation
    5. +14.5 Expression Statement
      1. 14.5.1 RS: Evaluation
    6. +14.6 Theif Statement
      1. 14.6.1 SS: Early Errors
      2. 14.6.2 RS: Evaluation
    7. +14.7 Iteration Statements
      1. +14.7.1 Semantics
        1. 14.7.1.1 LoopContinues (completion,labelSet )
        2. 14.7.1.2 RS: LoopEvaluation
      2. +14.7.2 Thedo-while Statement
        1. 14.7.2.1 SS: Early Errors
        2. 14.7.2.2 RS: DoWhileLoopEvaluation
      3. +14.7.3 Thewhile Statement
        1. 14.7.3.1 SS: Early Errors
        2. 14.7.3.2 RS: WhileLoopEvaluation
      4. +14.7.4 Thefor Statement
        1. 14.7.4.1 SS: Early Errors
        2. 14.7.4.2 RS: ForLoopEvaluation
        3. 14.7.4.3 ForBodyEvaluation (test,increment,stmt,perIterationBindings,labelSet )
        4. 14.7.4.4 CreatePerIterationEnvironment (perIterationBindings )
      5. +14.7.5 Thefor-in,for-of, andfor-await-of Statements
        1. 14.7.5.1 SS: Early Errors
        2. 14.7.5.2 SS: IsDestructuring
        3. 14.7.5.3 RS: ForDeclarationBindingInitialization
        4. 14.7.5.4 RS: ForDeclarationBindingInstantiation
        5. 14.7.5.5 RS: ForInOfLoopEvaluation
        6. 14.7.5.6 ForIn/OfHeadEvaluation (uninitializedBoundNames,expr,iterationKind )
        7. 14.7.5.7 ForIn/OfBodyEvaluation (lhs,stmt,iteratorRecord,iterationKind,lhsKind,labelSet [ ,iteratorKind ] )
        8. 14.7.5.8 RS: Evaluation
        9. 14.7.5.9 EnumerateObjectProperties (O )
        10. +14.7.5.10 For-In Iterator Objects
          1. 14.7.5.10.1 CreateForInIterator (object )
          2. +14.7.5.10.2 The %ForInIteratorPrototype% Object
            1. 14.7.5.10.2.1 %ForInIteratorPrototype%.next ( )
          3. 14.7.5.10.3 Properties of For-In Iterator Instances
    8. +14.8 Thecontinue Statement
      1. 14.8.1 SS: Early Errors
      2. 14.8.2 RS: Evaluation
    9. +14.9 Thebreak Statement
      1. 14.9.1 SS: Early Errors
      2. 14.9.2 RS: Evaluation
    10. +14.10 Thereturn Statement
      1. 14.10.1 RS: Evaluation
    11. +14.11 Thewith Statement
      1. 14.11.1 SS: Early Errors
      2. 14.11.2 RS: Evaluation
    12. +14.12 Theswitch Statement
      1. 14.12.1 SS: Early Errors
      2. 14.12.2 RS: CaseBlockEvaluation
      3. 14.12.3 CaseClauseIsSelected (C,input )
      4. 14.12.4 RS: Evaluation
    13. +14.13 Labelled Statements
      1. 14.13.1 SS: Early Errors
      2. 14.13.2 SS: IsLabelledFunction (stmt )
      3. 14.13.3 RS: Evaluation
      4. 14.13.4 RS: LabelledEvaluation
    14. +14.14 Thethrow Statement
      1. 14.14.1 RS: Evaluation
    15. +14.15 Thetry Statement
      1. 14.15.1 SS: Early Errors
      2. 14.15.2 RS: CatchClauseEvaluation
      3. 14.15.3 RS: Evaluation
    16. +14.16 Thedebugger Statement
      1. 14.16.1 RS: Evaluation
  16. +15 ECMAScript Language: Functions and Classes
    1. +15.1 Parameter Lists
      1. 15.1.1 SS: Early Errors
      2. 15.1.2 SS: ContainsExpression
      3. 15.1.3 SS: IsSimpleParameterList
      4. 15.1.4 SS: HasInitializer
      5. 15.1.5 SS: ExpectedArgumentCount
    2. +15.2 Function Definitions
      1. 15.2.1 SS: Early Errors
      2. 15.2.2 SS: FunctionBodyContainsUseStrict
      3. 15.2.3 RS: EvaluateFunctionBody
      4. 15.2.4 RS: InstantiateOrdinaryFunctionObject
      5. 15.2.5 RS: InstantiateOrdinaryFunctionExpression
      6. 15.2.6 RS: Evaluation
    3. +15.3 Arrow Function Definitions
      1. 15.3.1 SS: Early Errors
      2. 15.3.2 SS: ConciseBodyContainsUseStrict
      3. 15.3.3 RS: EvaluateConciseBody
      4. 15.3.4 RS: InstantiateArrowFunctionExpression
      5. 15.3.5 RS: Evaluation
    4. +15.4 Method Definitions
      1. 15.4.1 SS: Early Errors
      2. 15.4.2 SS: HasDirectSuper
      3. 15.4.3 SS: SpecialMethod
      4. 15.4.4 RS: DefineMethod
      5. 15.4.5 RS: MethodDefinitionEvaluation
    5. +15.5 Generator Function Definitions
      1. 15.5.1 SS: Early Errors
      2. 15.5.2 RS: EvaluateGeneratorBody
      3. 15.5.3 RS: InstantiateGeneratorFunctionObject
      4. 15.5.4 RS: InstantiateGeneratorFunctionExpression
      5. 15.5.5 RS: Evaluation
    6. +15.6 Async Generator Function Definitions
      1. 15.6.1 SS: Early Errors
      2. 15.6.2 RS: EvaluateAsyncGeneratorBody
      3. 15.6.3 RS: InstantiateAsyncGeneratorFunctionObject
      4. 15.6.4 RS: InstantiateAsyncGeneratorFunctionExpression
      5. 15.6.5 RS: Evaluation
    7. +15.7 Class Definitions
      1. 15.7.1 SS: Early Errors
      2. 15.7.2 SS: ClassElementKind
      3. 15.7.3 SS: ConstructorMethod
      4. 15.7.4 SS: IsStatic
      5. 15.7.5 SS: NonConstructorElements
      6. 15.7.6 SS: PrototypePropertyNameList
      7. 15.7.7 SS: AllPrivateIdentifiersValid
      8. 15.7.8 SS: PrivateBoundIdentifiers
      9. 15.7.9 SS: ContainsArguments
      10. 15.7.10 RS: ClassFieldDefinitionEvaluation
      11. 15.7.11 RS: ClassStaticBlockDefinitionEvaluation
      12. 15.7.12 RS: EvaluateClassStaticBlockBody
      13. 15.7.13 RS: ClassElementEvaluation
      14. 15.7.14 RS: ClassDefinitionEvaluation
      15. 15.7.15 RS: BindingClassDeclarationEvaluation
      16. 15.7.16 RS: Evaluation
    8. +15.8 Async Function Definitions
      1. 15.8.1 SS: Early Errors
      2. 15.8.2 RS: InstantiateAsyncFunctionObject
      3. 15.8.3 RS: InstantiateAsyncFunctionExpression
      4. 15.8.4 RS: EvaluateAsyncFunctionBody
      5. 15.8.5 RS: Evaluation
    9. +15.9 Async Arrow Function Definitions
      1. 15.9.1 SS: Early Errors
      2. 15.9.2 SS: AsyncConciseBodyContainsUseStrict
      3. 15.9.3 RS: EvaluateAsyncConciseBody
      4. 15.9.4 RS: InstantiateAsyncArrowFunctionExpression
      5. 15.9.5 RS: Evaluation
    10. +15.10 Tail Position Calls
      1. 15.10.1 SS: IsInTailPosition (call )
      2. 15.10.2 SS: HasCallInTailPosition
      3. 15.10.3 PrepareForTailCall ( )
  17. +16 ECMAScript Language: Scripts and Modules
    1. +16.1 Scripts
      1. 16.1.1 SS: Early Errors
      2. 16.1.2 SS: ScriptIsStrict
      3. 16.1.3 RS: Evaluation
      4. 16.1.4 Script Records
      5. 16.1.5 ParseScript (sourceText,realm,hostDefined )
      6. 16.1.6 ScriptEvaluation (scriptRecord )
      7. 16.1.7 GlobalDeclarationInstantiation (script,env )
    2. +16.2 Modules
      1. +16.2.1 Module Semantics
        1. 16.2.1.1 SS: Early Errors
        2. 16.2.1.2 SS: ImportedLocalNames (importEntries )
        3. +16.2.1.3 ModuleRequest Records
          1. 16.2.1.3.1 ModuleRequestsEqual (left,right )
        4. 16.2.1.4 SS: ModuleRequests
        5. +16.2.1.5 Abstract Module Records
          1. 16.2.1.5.1 EvaluateModuleSync (module )
        6. +16.2.1.6 Cyclic Module Records
          1. +16.2.1.6.1 Implementation of Module Record Abstract Methods
            1. +16.2.1.6.1.1 LoadRequestedModules ( [hostDefined ] )
              1. 16.2.1.6.1.1.1 InnerModuleLoading (state,module )
              2. 16.2.1.6.1.1.2 ContinueModuleLoading (state,moduleCompletion )
            2. +16.2.1.6.1.2 Link ( )
              1. 16.2.1.6.1.2.1 InnerModuleLinking (module,stack,index )
            3. +16.2.1.6.1.3 Evaluate ( )
              1. 16.2.1.6.1.3.1 InnerModuleEvaluation (module,stack,index )
              2. 16.2.1.6.1.3.2 ExecuteAsyncModule (module )
              3. 16.2.1.6.1.3.3 GatherAvailableAncestors (module,execList )
              4. 16.2.1.6.1.3.4 AsyncModuleExecutionFulfilled (module )
              5. 16.2.1.6.1.3.5 AsyncModuleExecutionRejected (module,error )
          2. 16.2.1.6.2 Example Cyclic Module Record Graphs
        7. +16.2.1.7 Source Text Module Records
          1. 16.2.1.7.1 ParseModule (sourceText,realm,hostDefined )
          2. +16.2.1.7.2 Implementation of Module Record Abstract Methods
            1. 16.2.1.7.2.1 GetExportedNames ( [exportStarSet ] )
            2. 16.2.1.7.2.2 ResolveExport (exportName [ ,resolveSet ] )
          3. +16.2.1.7.3 Implementation of Cyclic Module Record Abstract Methods
            1. 16.2.1.7.3.1 InitializeEnvironment ( )
            2. 16.2.1.7.3.2 ExecuteModule ( [capability ] )
        8. +16.2.1.8 Synthetic Module Records
          1. 16.2.1.8.1 CreateDefaultExportSyntheticModule (defaultExport )
          2. 16.2.1.8.2 ParseJSONModule (source )
          3. 16.2.1.8.3 SetSyntheticModuleExport (module,exportName,exportValue )
          4. +16.2.1.8.4 Implementation of Module Record Abstract Methods
            1. 16.2.1.8.4.1 LoadRequestedModules ( )
            2. 16.2.1.8.4.2 GetExportedNames ( )
            3. 16.2.1.8.4.3 ResolveExport (exportName )
            4. 16.2.1.8.4.4 Link ( )
            5. 16.2.1.8.4.5 Evaluate ( )
        9. 16.2.1.9 GetImportedModule (referrer,request )
        10. 16.2.1.10 HostLoadImportedModule (referrer,moduleRequest,hostDefined,payload )
        11. 16.2.1.11 FinishLoadingImportedModule (referrer,moduleRequest,payload,result )
        12. +16.2.1.12 AllImportAttributesSupported (attributes )
          1. 16.2.1.12.1 HostGetSupportedImportAttributes ( )
        13. 16.2.1.13 GetModuleNamespace (module )
        14. 16.2.1.14 RS: Evaluation
      2. +16.2.2 Imports
        1. 16.2.2.1 SS: Early Errors
        2. 16.2.2.2 SS: ImportEntries
        3. 16.2.2.3 SS: ImportEntriesForModule
        4. 16.2.2.4 SS: WithClauseToAttributes
      3. +16.2.3 Exports
        1. 16.2.3.1 SS: Early Errors
        2. 16.2.3.2 SS: ExportedBindings
        3. 16.2.3.3 SS: ExportedNames
        4. 16.2.3.4 SS: ExportEntries
        5. 16.2.3.5 SS: ExportEntriesForModule
        6. 16.2.3.6 SS: ReferencedBindings
        7. 16.2.3.7 RS: Evaluation
  18. +17 Error Handling and Language Extensions
    1. 17.1 Forbidden Extensions
  19. 18 ECMAScript Standard Built-in Objects
  20. +19 The Global Object
    1. +19.1 Value Properties of the Global Object
      1. 19.1.1 globalThis
      2. 19.1.2 Infinity
      3. 19.1.3 NaN
      4. 19.1.4 undefined
    2. +19.2 Function Properties of the Global Object
      1. +19.2.1 eval (x )
        1. 19.2.1.1 PerformEval (x,strictCaller,direct )
        2. 19.2.1.2 HostEnsureCanCompileStrings (calleeRealm,parameterStrings,bodyString,direct )
        3. 19.2.1.3 EvalDeclarationInstantiation (body,varEnv,lexEnv,privateEnv,strict )
      2. 19.2.2 isFinite (number )
      3. 19.2.3 isNaN (number )
      4. 19.2.4 parseFloat (string )
      5. 19.2.5 parseInt (string,radix )
      6. +19.2.6 URI Handling Functions
        1. 19.2.6.1 decodeURI (encodedURI )
        2. 19.2.6.2 decodeURIComponent (encodedURIComponent )
        3. 19.2.6.3 encodeURI (uri )
        4. 19.2.6.4 encodeURIComponent (uriComponent )
        5. 19.2.6.5 Encode (string,extraUnescaped )
        6. 19.2.6.6 Decode (string,preserveEscapeSet )
        7. 19.2.6.7 ParseHexOctet (string,position )
    3. +19.3 Constructor Properties of the Global Object
      1. 19.3.1 AggregateError ( . . . )
      2. 19.3.2 Array ( . . . )
      3. 19.3.3 ArrayBuffer ( . . . )
      4. 19.3.4 BigInt ( . . . )
      5. 19.3.5 BigInt64Array ( . . . )
      6. 19.3.6 BigUint64Array ( . . . )
      7. 19.3.7 Boolean ( . . . )
      8. 19.3.8 DataView ( . . . )
      9. 19.3.9 Date ( . . . )
      10. 19.3.10 Error ( . . . )
      11. 19.3.11 EvalError ( . . . )
      12. 19.3.12 FinalizationRegistry ( . . . )
      13. 19.3.13 Float16Array ( . . . )
      14. 19.3.14 Float32Array ( . . . )
      15. 19.3.15 Float64Array ( . . . )
      16. 19.3.16 Function ( . . . )
      17. 19.3.17 Int8Array ( . . . )
      18. 19.3.18 Int16Array ( . . . )
      19. 19.3.19 Int32Array ( . . . )
      20. 19.3.20 Iterator ( . . . )
      21. 19.3.21 Map ( . . . )
      22. 19.3.22 Number ( . . . )
      23. 19.3.23 Object ( . . . )
      24. 19.3.24 Promise ( . . . )
      25. 19.3.25 Proxy ( . . . )
      26. 19.3.26 RangeError ( . . . )
      27. 19.3.27 ReferenceError ( . . . )
      28. 19.3.28 RegExp ( . . . )
      29. 19.3.29 Set ( . . . )
      30. 19.3.30 SharedArrayBuffer ( . . . )
      31. 19.3.31 String ( . . . )
      32. 19.3.32 Symbol ( . . . )
      33. 19.3.33 SyntaxError ( . . . )
      34. 19.3.34 TypeError ( . . . )
      35. 19.3.35 Uint8Array ( . . . )
      36. 19.3.36 Uint8ClampedArray ( . . . )
      37. 19.3.37 Uint16Array ( . . . )
      38. 19.3.38 Uint32Array ( . . . )
      39. 19.3.39 URIError ( . . . )
      40. 19.3.40 WeakMap ( . . . )
      41. 19.3.41 WeakRef ( . . . )
      42. 19.3.42 WeakSet ( . . . )
    4. +19.4 Other Properties of the Global Object
      1. 19.4.1 Atomics
      2. 19.4.2 JSON
      3. 19.4.3 Math
      4. 19.4.4 Reflect
  21. +20 Fundamental Objects
    1. +20.1 Object Objects
      1. +20.1.1 The Object Constructor
        1. 20.1.1.1 Object ( [value ] )
      2. +20.1.2 Properties of the Object Constructor
        1. 20.1.2.1 Object.assign (target, ...sources )
        2. 20.1.2.2 Object.create (O,Properties )
        3. +20.1.2.3 Object.defineProperties (O,Properties )
          1. 20.1.2.3.1 ObjectDefineProperties (O,Properties )
        4. 20.1.2.4 Object.defineProperty (O,P,Attributes )
        5. 20.1.2.5 Object.entries (O )
        6. 20.1.2.6 Object.freeze (O )
        7. 20.1.2.7 Object.fromEntries (iterable )
        8. 20.1.2.8 Object.getOwnPropertyDescriptor (O,P )
        9. 20.1.2.9 Object.getOwnPropertyDescriptors (O )
        10. 20.1.2.10 Object.getOwnPropertyNames (O )
        11. +20.1.2.11 Object.getOwnPropertySymbols (O )
          1. 20.1.2.11.1 GetOwnPropertyKeys (O,type )
        12. 20.1.2.12 Object.getPrototypeOf (O )
        13. 20.1.2.13 Object.groupBy (items,callback )
        14. 20.1.2.14 Object.hasOwn (O,P )
        15. 20.1.2.15 Object.is (value1,value2 )
        16. 20.1.2.16 Object.isExtensible (O )
        17. 20.1.2.17 Object.isFrozen (O )
        18. 20.1.2.18 Object.isSealed (O )
        19. 20.1.2.19 Object.keys (O )
        20. 20.1.2.20 Object.preventExtensions (O )
        21. 20.1.2.21 Object.prototype
        22. 20.1.2.22 Object.seal (O )
        23. 20.1.2.23 Object.setPrototypeOf (O,proto )
        24. 20.1.2.24 Object.values (O )
      3. +20.1.3 Properties of the Object Prototype Object
        1. 20.1.3.1 Object.prototype.constructor
        2. 20.1.3.2 Object.prototype.hasOwnProperty (V )
        3. 20.1.3.3 Object.prototype.isPrototypeOf (V )
        4. 20.1.3.4 Object.prototype.propertyIsEnumerable (V )
        5. 20.1.3.5 Object.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )
        6. 20.1.3.6 Object.prototype.toString ( )
        7. 20.1.3.7 Object.prototype.valueOf ( )
        8. +20.1.3.8 Object.prototype.__proto__
          1. 20.1.3.8.1 get Object.prototype.__proto__
          2. 20.1.3.8.2 set Object.prototype.__proto__
        9. +20.1.3.9 Legacy Object.prototype Accessor Methods
          1. 20.1.3.9.1 Object.prototype.__defineGetter__ (P,getter )
          2. 20.1.3.9.2 Object.prototype.__defineSetter__ (P,setter )
          3. 20.1.3.9.3 Object.prototype.__lookupGetter__ (P )
          4. 20.1.3.9.4 Object.prototype.__lookupSetter__ (P )
      4. 20.1.4 Properties of Object Instances
    2. +20.2 Function Objects
      1. +20.2.1 The Function Constructor
        1. +20.2.1.1 Function ( ...parameterArgs,bodyArg )
          1. 20.2.1.1.1 CreateDynamicFunction (constructor,newTarget,kind,parameterArgs,bodyArg )
      2. +20.2.2 Properties of the Function Constructor
        1. 20.2.2.1 Function.prototype
      3. +20.2.3 Properties of the Function Prototype Object
        1. 20.2.3.1 Function.prototype.apply (thisArg,argArray )
        2. 20.2.3.2 Function.prototype.bind (thisArg, ...args )
        3. 20.2.3.3 Function.prototype.call (thisArg, ...args )
        4. 20.2.3.4 Function.prototype.constructor
        5. 20.2.3.5 Function.prototype.toString ( )
        6. 20.2.3.6 Function.prototype [ %Symbol.hasInstance% ] (V )
      4. +20.2.4 Function Instances
        1. 20.2.4.1 length
        2. 20.2.4.2 name
        3. 20.2.4.3 prototype
      5. 20.2.5 HostHasSourceTextAvailable (func )
    3. +20.3 Boolean Objects
      1. +20.3.1 The Boolean Constructor
        1. 20.3.1.1 Boolean (value )
      2. +20.3.2 Properties of the Boolean Constructor
        1. 20.3.2.1 Boolean.prototype
      3. +20.3.3 Properties of the Boolean Prototype Object
        1. 20.3.3.1 Boolean.prototype.constructor
        2. 20.3.3.2 Boolean.prototype.toString ( )
        3. +20.3.3.3 Boolean.prototype.valueOf ( )
          1. 20.3.3.3.1 ThisBooleanValue (value )
      4. 20.3.4 Properties of Boolean Instances
    4. +20.4 Symbol Objects
      1. +20.4.1 The Symbol Constructor
        1. 20.4.1.1 Symbol ( [description ] )
      2. +20.4.2 Properties of the Symbol Constructor
        1. 20.4.2.1 Symbol.asyncIterator
        2. 20.4.2.2 Symbol.for (key )
        3. 20.4.2.3 Symbol.hasInstance
        4. 20.4.2.4 Symbol.isConcatSpreadable
        5. 20.4.2.5 Symbol.iterator
        6. 20.4.2.6 Symbol.keyFor (sym )
        7. 20.4.2.7 Symbol.match
        8. 20.4.2.8 Symbol.matchAll
        9. 20.4.2.9 Symbol.prototype
        10. 20.4.2.10 Symbol.replace
        11. 20.4.2.11 Symbol.search
        12. 20.4.2.12 Symbol.species
        13. 20.4.2.13 Symbol.split
        14. 20.4.2.14 Symbol.toPrimitive
        15. 20.4.2.15 Symbol.toStringTag
        16. 20.4.2.16 Symbol.unscopables
      3. +20.4.3 Properties of the Symbol Prototype Object
        1. 20.4.3.1 Symbol.prototype.constructor
        2. 20.4.3.2 get Symbol.prototype.description
        3. +20.4.3.3 Symbol.prototype.toString ( )
          1. 20.4.3.3.1 SymbolDescriptiveString (sym )
        4. +20.4.3.4 Symbol.prototype.valueOf ( )
          1. 20.4.3.4.1 ThisSymbolValue (value )
        5. 20.4.3.5 Symbol.prototype [ %Symbol.toPrimitive% ] (hint )
        6. 20.4.3.6 Symbol.prototype [ %Symbol.toStringTag% ]
      4. 20.4.4 Properties of Symbol Instances
      5. +20.4.5 Abstract Operations for Symbols
        1. 20.4.5.1 KeyForSymbol (sym )
    5. +20.5 Error Objects
      1. +20.5.1 The Error Constructor
        1. 20.5.1.1 Error (message [ ,options ] )
      2. +20.5.2 Properties of the Error Constructor
        1. 20.5.2.1 Error.isError (arg )
        2. 20.5.2.2 Error.prototype
      3. +20.5.3 Properties of the Error Prototype Object
        1. 20.5.3.1 Error.prototype.constructor
        2. 20.5.3.2 Error.prototype.message
        3. 20.5.3.3 Error.prototype.name
        4. 20.5.3.4 Error.prototype.toString ( )
      4. 20.5.4 Properties of Error Instances
      5. +20.5.5 Native Error Types Used in This Standard
        1. 20.5.5.1 EvalError
        2. 20.5.5.2 RangeError
        3. 20.5.5.3 ReferenceError
        4. 20.5.5.4 SyntaxError
        5. 20.5.5.5 TypeError
        6. 20.5.5.6 URIError
      6. +20.5.6NativeError Object Structure
        1. +20.5.6.1 TheNativeError Constructors
          1. 20.5.6.1.1NativeError (message [ ,options ] )
        2. +20.5.6.2 Properties of theNativeError Constructors
          1. 20.5.6.2.1NativeError.prototype
        3. +20.5.6.3 Properties of theNativeError Prototype Objects
          1. 20.5.6.3.1NativeError.prototype.constructor
          2. 20.5.6.3.2NativeError.prototype.message
          3. 20.5.6.3.3NativeError.prototype.name
        4. 20.5.6.4 Properties ofNativeError Instances
      7. +20.5.7 AggregateError Objects
        1. +20.5.7.1 The AggregateError Constructor
          1. 20.5.7.1.1 AggregateError (errors,message [ ,options ] )
        2. +20.5.7.2 Properties of the AggregateError Constructor
          1. 20.5.7.2.1 AggregateError.prototype
        3. +20.5.7.3 Properties of the AggregateError Prototype Object
          1. 20.5.7.3.1 AggregateError.prototype.constructor
          2. 20.5.7.3.2 AggregateError.prototype.message
          3. 20.5.7.3.3 AggregateError.prototype.name
        4. 20.5.7.4 Properties of AggregateError Instances
      8. +20.5.8 Abstract Operations for Error Objects
        1. 20.5.8.1 InstallErrorCause (O,options )
  22. +21 Numbers and Dates
    1. +21.1 Number Objects
      1. +21.1.1 The Number Constructor
        1. 21.1.1.1 Number (value )
      2. +21.1.2 Properties of the Number Constructor
        1. 21.1.2.1 Number.EPSILON
        2. 21.1.2.2 Number.isFinite (number )
        3. 21.1.2.3 Number.isInteger (number )
        4. 21.1.2.4 Number.isNaN (number )
        5. 21.1.2.5 Number.isSafeInteger (number )
        6. 21.1.2.6 Number.MAX_SAFE_INTEGER
        7. 21.1.2.7 Number.MAX_VALUE
        8. 21.1.2.8 Number.MIN_SAFE_INTEGER
        9. 21.1.2.9 Number.MIN_VALUE
        10. 21.1.2.10 Number.NaN
        11. 21.1.2.11 Number.NEGATIVE_INFINITY
        12. 21.1.2.12 Number.parseFloat (string )
        13. 21.1.2.13 Number.parseInt (string,radix )
        14. 21.1.2.14 Number.POSITIVE_INFINITY
        15. 21.1.2.15 Number.prototype
      3. +21.1.3 Properties of the Number Prototype Object
        1. 21.1.3.1 Number.prototype.constructor
        2. 21.1.3.2 Number.prototype.toExponential (fractionDigits )
        3. 21.1.3.3 Number.prototype.toFixed (fractionDigits )
        4. 21.1.3.4 Number.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )
        5. 21.1.3.5 Number.prototype.toPrecision (precision )
        6. 21.1.3.6 Number.prototype.toString ( [radix ] )
        7. +21.1.3.7 Number.prototype.valueOf ( )
          1. 21.1.3.7.1 ThisNumberValue (value )
      4. 21.1.4 Properties of Number Instances
    2. +21.2 BigInt Objects
      1. +21.2.1 The BigInt Constructor
        1. +21.2.1.1 BigInt (value )
          1. 21.2.1.1.1 NumberToBigInt (number )
      2. +21.2.2 Properties of the BigInt Constructor
        1. 21.2.2.1 BigInt.asIntN (bits,bigint )
        2. 21.2.2.2 BigInt.asUintN (bits,bigint )
        3. 21.2.2.3 BigInt.prototype
      3. +21.2.3 Properties of the BigInt Prototype Object
        1. 21.2.3.1 BigInt.prototype.constructor
        2. 21.2.3.2 BigInt.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )
        3. 21.2.3.3 BigInt.prototype.toString ( [radix ] )
        4. +21.2.3.4 BigInt.prototype.valueOf ( )
          1. 21.2.3.4.1 ThisBigIntValue (value )
        5. 21.2.3.5 BigInt.prototype [ %Symbol.toStringTag% ]
      4. 21.2.4 Properties of BigInt Instances
    3. +21.3 The Math Object
      1. +21.3.1 Value Properties of the Math Object
        1. 21.3.1.1 Math.E
        2. 21.3.1.2 Math.LN10
        3. 21.3.1.3 Math.LN2
        4. 21.3.1.4 Math.LOG10E
        5. 21.3.1.5 Math.LOG2E
        6. 21.3.1.6 Math.PI
        7. 21.3.1.7 Math.SQRT1_2
        8. 21.3.1.8 Math.SQRT2
        9. 21.3.1.9 Math [ %Symbol.toStringTag% ]
      2. +21.3.2 Function Properties of the Math Object
        1. 21.3.2.1 Math.abs (x )
        2. 21.3.2.2 Math.acos (x )
        3. 21.3.2.3 Math.acosh (x )
        4. 21.3.2.4 Math.asin (x )
        5. 21.3.2.5 Math.asinh (x )
        6. 21.3.2.6 Math.atan (x )
        7. 21.3.2.7 Math.atanh (x )
        8. 21.3.2.8 Math.atan2 (y,x )
        9. 21.3.2.9 Math.cbrt (x )
        10. 21.3.2.10 Math.ceil (x )
        11. 21.3.2.11 Math.clz32 (x )
        12. 21.3.2.12 Math.cos (x )
        13. 21.3.2.13 Math.cosh (x )
        14. 21.3.2.14 Math.exp (x )
        15. 21.3.2.15 Math.expm1 (x )
        16. 21.3.2.16 Math.floor (x )
        17. 21.3.2.17 Math.fround (x )
        18. 21.3.2.18 Math.f16round (x )
        19. 21.3.2.19 Math.hypot ( ...args )
        20. 21.3.2.20 Math.imul (x,y )
        21. 21.3.2.21 Math.log (x )
        22. 21.3.2.22 Math.log1p (x )
        23. 21.3.2.23 Math.log10 (x )
        24. 21.3.2.24 Math.log2 (x )
        25. 21.3.2.25 Math.max ( ...args )
        26. 21.3.2.26 Math.min ( ...args )
        27. 21.3.2.27 Math.pow (base,exponent )
        28. 21.3.2.28 Math.random ( )
        29. 21.3.2.29 Math.round (x )
        30. 21.3.2.30 Math.sign (x )
        31. 21.3.2.31 Math.sin (x )
        32. 21.3.2.32 Math.sinh (x )
        33. 21.3.2.33 Math.sqrt (x )
        34. 21.3.2.34 Math.sumPrecise (items )
        35. 21.3.2.35 Math.tan (x )
        36. 21.3.2.36 Math.tanh (x )
        37. 21.3.2.37 Math.trunc (x )
    4. +21.4 Date Objects
      1. +21.4.1 Overview of Date Objects and Definitions of Abstract Operations
        1. 21.4.1.1 Time Values and Time Range
        2. 21.4.1.2 Time-related Constants
        3. 21.4.1.3 Day (t )
        4. 21.4.1.4 TimeWithinDay (t )
        5. 21.4.1.5 DaysInYear (y )
        6. 21.4.1.6 DayFromYear (y )
        7. 21.4.1.7 TimeFromYear (y )
        8. 21.4.1.8 YearFromTime (t )
        9. 21.4.1.9 DayWithinYear (t )
        10. 21.4.1.10 InLeapYear (t )
        11. 21.4.1.11 MonthFromTime (t )
        12. 21.4.1.12 DateFromTime (t )
        13. 21.4.1.13 WeekDay (t )
        14. 21.4.1.14 HourFromTime (t )
        15. 21.4.1.15 MinFromTime (t )
        16. 21.4.1.16 SecFromTime (t )
        17. 21.4.1.17 msFromTime (t )
        18. 21.4.1.18 GetUTCEpochNanoseconds (year,month,day,hour,minute,second,millisecond,microsecond,nanosecond )
        19. 21.4.1.19 Time Zone Identifiers
        20. 21.4.1.20 GetNamedTimeZoneEpochNanoseconds (timeZoneIdentifier,year,month,day,hour,minute,second,millisecond,microsecond,nanosecond )
        21. 21.4.1.21 GetNamedTimeZoneOffsetNanoseconds (timeZoneIdentifier,epochNanoseconds )
        22. 21.4.1.22 Time Zone Identifier Record
        23. 21.4.1.23 AvailableNamedTimeZoneIdentifiers ( )
        24. 21.4.1.24 SystemTimeZoneIdentifier ( )
        25. 21.4.1.25 LocalTime (t )
        26. 21.4.1.26 UTC (t )
        27. 21.4.1.27 MakeTime (hour,min,sec,ms )
        28. 21.4.1.28 MakeDay (year,month,date )
        29. 21.4.1.29 MakeDate (day,time )
        30. 21.4.1.30 MakeFullYear (year )
        31. 21.4.1.31 TimeClip (time )
        32. +21.4.1.32 Date Time String Format
          1. 21.4.1.32.1 Expanded Years
        33. +21.4.1.33 Time Zone Offset String Format
          1. 21.4.1.33.1 IsTimeZoneOffsetString (offsetString )
          2. 21.4.1.33.2 ParseTimeZoneOffsetString (offsetString )
      2. +21.4.2 The Date Constructor
        1. 21.4.2.1 Date ( ...values )
      3. +21.4.3 Properties of the Date Constructor
        1. 21.4.3.1 Date.now ( )
        2. 21.4.3.2 Date.parse (string )
        3. 21.4.3.3 Date.prototype
        4. 21.4.3.4 Date.UTC (year [ ,month [ ,date [ ,hours [ ,minutes [ ,seconds [ ,ms ] ] ] ] ] ] )
      4. +21.4.4 Properties of the Date Prototype Object
        1. 21.4.4.1 Date.prototype.constructor
        2. 21.4.4.2 Date.prototype.getDate ( )
        3. 21.4.4.3 Date.prototype.getDay ( )
        4. 21.4.4.4 Date.prototype.getFullYear ( )
        5. 21.4.4.5 Date.prototype.getHours ( )
        6. 21.4.4.6 Date.prototype.getMilliseconds ( )
        7. 21.4.4.7 Date.prototype.getMinutes ( )
        8. 21.4.4.8 Date.prototype.getMonth ( )
        9. 21.4.4.9 Date.prototype.getSeconds ( )
        10. 21.4.4.10 Date.prototype.getTime ( )
        11. 21.4.4.11 Date.prototype.getTimezoneOffset ( )
        12. 21.4.4.12 Date.prototype.getUTCDate ( )
        13. 21.4.4.13 Date.prototype.getUTCDay ( )
        14. 21.4.4.14 Date.prototype.getUTCFullYear ( )
        15. 21.4.4.15 Date.prototype.getUTCHours ( )
        16. 21.4.4.16 Date.prototype.getUTCMilliseconds ( )
        17. 21.4.4.17 Date.prototype.getUTCMinutes ( )
        18. 21.4.4.18 Date.prototype.getUTCMonth ( )
        19. 21.4.4.19 Date.prototype.getUTCSeconds ( )
        20. 21.4.4.20 Date.prototype.setDate (date )
        21. 21.4.4.21 Date.prototype.setFullYear (year [ ,month [ ,date ] ] )
        22. 21.4.4.22 Date.prototype.setHours (hour [ ,min [ ,sec [ ,ms ] ] ] )
        23. 21.4.4.23 Date.prototype.setMilliseconds (ms )
        24. 21.4.4.24 Date.prototype.setMinutes (min [ ,sec [ ,ms ] ] )
        25. 21.4.4.25 Date.prototype.setMonth (month [ ,date ] )
        26. 21.4.4.26 Date.prototype.setSeconds (sec [ ,ms ] )
        27. 21.4.4.27 Date.prototype.setTime (time )
        28. 21.4.4.28 Date.prototype.setUTCDate (date )
        29. 21.4.4.29 Date.prototype.setUTCFullYear (year [ ,month [ ,date ] ] )
        30. 21.4.4.30 Date.prototype.setUTCHours (hour [ ,min [ ,sec [ ,ms ] ] ] )
        31. 21.4.4.31 Date.prototype.setUTCMilliseconds (ms )
        32. 21.4.4.32 Date.prototype.setUTCMinutes (min [ ,sec [ ,ms ] ] )
        33. 21.4.4.33 Date.prototype.setUTCMonth (month [ ,date ] )
        34. 21.4.4.34 Date.prototype.setUTCSeconds (sec [ ,ms ] )
        35. 21.4.4.35 Date.prototype.toDateString ( )
        36. 21.4.4.36 Date.prototype.toISOString ( )
        37. 21.4.4.37 Date.prototype.toJSON (key )
        38. 21.4.4.38 Date.prototype.toLocaleDateString ( [reserved1 [ ,reserved2 ] ] )
        39. 21.4.4.39 Date.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )
        40. 21.4.4.40 Date.prototype.toLocaleTimeString ( [reserved1 [ ,reserved2 ] ] )
        41. +21.4.4.41 Date.prototype.toString ( )
          1. 21.4.4.41.1 TimeString (tv )
          2. 21.4.4.41.2 DateString (tv )
          3. 21.4.4.41.3 TimeZoneString (tv )
          4. 21.4.4.41.4 ToDateString (tv )
        42. 21.4.4.42 Date.prototype.toTimeString ( )
        43. 21.4.4.43 Date.prototype.toUTCString ( )
        44. 21.4.4.44 Date.prototype.valueOf ( )
        45. 21.4.4.45 Date.prototype [ %Symbol.toPrimitive% ] (hint )
      5. 21.4.5 Properties of Date Instances
  23. +22 Text Processing
    1. +22.1 String Objects
      1. +22.1.1 The String Constructor
        1. 22.1.1.1 String (value )
      2. +22.1.2 Properties of the String Constructor
        1. 22.1.2.1 String.fromCharCode ( ...codeUnits )
        2. 22.1.2.2 String.fromCodePoint ( ...codePoints )
        3. 22.1.2.3 String.prototype
        4. 22.1.2.4 String.raw (template, ...substitutions )
      3. +22.1.3 Properties of the String Prototype Object
        1. 22.1.3.1 String.prototype.at (index )
        2. 22.1.3.2 String.prototype.charAt (pos )
        3. 22.1.3.3 String.prototype.charCodeAt (pos )
        4. 22.1.3.4 String.prototype.codePointAt (pos )
        5. 22.1.3.5 String.prototype.concat ( ...args )
        6. 22.1.3.6 String.prototype.constructor
        7. 22.1.3.7 String.prototype.endsWith (searchString [ ,endPosition ] )
        8. 22.1.3.8 String.prototype.includes (searchString [ ,position ] )
        9. 22.1.3.9 String.prototype.indexOf (searchString [ ,position ] )
        10. 22.1.3.10 String.prototype.isWellFormed ( )
        11. 22.1.3.11 String.prototype.lastIndexOf (searchString [ ,position ] )
        12. 22.1.3.12 String.prototype.localeCompare (that [ ,reserved1 [ ,reserved2 ] ] )
        13. 22.1.3.13 String.prototype.match (regexp )
        14. 22.1.3.14 String.prototype.matchAll (regexp )
        15. 22.1.3.15 String.prototype.normalize ( [form ] )
        16. 22.1.3.16 String.prototype.padEnd (maxLength [ ,fillString ] )
        17. +22.1.3.17 String.prototype.padStart (maxLength [ ,fillString ] )
          1. 22.1.3.17.1 StringPaddingBuiltinsImpl (O,maxLength,fillString,placement )
          2. 22.1.3.17.2 StringPad (S,maxLength,fillString,placement )
          3. 22.1.3.17.3 ToZeroPaddedDecimalString (n,minLength )
        18. 22.1.3.18 String.prototype.repeat (count )
        19. +22.1.3.19 String.prototype.replace (searchValue,replaceValue )
          1. 22.1.3.19.1 GetSubstitution (matched,str,position,captures,namedCaptures,replacementTemplate )
        20. 22.1.3.20 String.prototype.replaceAll (searchValue,replaceValue )
        21. 22.1.3.21 String.prototype.search (regexp )
        22. 22.1.3.22 String.prototype.slice (start,end )
        23. 22.1.3.23 String.prototype.split (separator,limit )
        24. 22.1.3.24 String.prototype.startsWith (searchString [ ,position ] )
        25. 22.1.3.25 String.prototype.substring (start,end )
        26. 22.1.3.26 String.prototype.toLocaleLowerCase ( [reserved1 [ ,reserved2 ] ] )
        27. 22.1.3.27 String.prototype.toLocaleUpperCase ( [reserved1 [ ,reserved2 ] ] )
        28. 22.1.3.28 String.prototype.toLowerCase ( )
        29. 22.1.3.29 String.prototype.toString ( )
        30. 22.1.3.30 String.prototype.toUpperCase ( )
        31. 22.1.3.31 String.prototype.toWellFormed ( )
        32. +22.1.3.32 String.prototype.trim ( )
          1. 22.1.3.32.1 TrimString (string,where )
        33. 22.1.3.33 String.prototype.trimEnd ( )
        34. 22.1.3.34 String.prototype.trimStart ( )
        35. +22.1.3.35 String.prototype.valueOf ( )
          1. 22.1.3.35.1 ThisStringValue (value )
        36. 22.1.3.36 String.prototype [ %Symbol.iterator% ] ( )
      4. +22.1.4 Properties of String Instances
        1. 22.1.4.1 length
      5. +22.1.5 String Iterator Objects
        1. +22.1.5.1 The %StringIteratorPrototype% Object
          1. 22.1.5.1.1 %StringIteratorPrototype%.next ( )
          2. 22.1.5.1.2 %StringIteratorPrototype% [ %Symbol.toStringTag% ]
    2. +22.2 RegExp (Regular Expression) Objects
      1. +22.2.1 Patterns
        1. 22.2.1.1 SS: Early Errors
        2. 22.2.1.2 SS: CountLeftCapturingParensWithin (node )
        3. 22.2.1.3 SS: CountLeftCapturingParensBefore (node )
        4. 22.2.1.4 SS: MightBothParticipate (x,y )
        5. 22.2.1.5 SS: CapturingGroupNumber
        6. 22.2.1.6 SS: IsCharacterClass
        7. 22.2.1.7 SS: CharacterValue
        8. 22.2.1.8 SS: MayContainStrings
        9. 22.2.1.9 SS: GroupSpecifiersThatMatch (thisGroupName )
        10. 22.2.1.10 SS: CapturingGroupName
        11. 22.2.1.11 SS: RegExpIdentifierCodePoints
        12. 22.2.1.12 SS: RegExpIdentifierCodePoint
      2. +22.2.2 Pattern Semantics
        1. +22.2.2.1 Notation
          1. 22.2.2.1.1 RegExp Records
        2. 22.2.2.2 RS: CompilePattern
        3. +22.2.2.3 RS: CompileSubpattern
          1. 22.2.2.3.1 RepeatMatcher (m,min,max,greedy,x,c,parenIndex,parenCount )
          2. 22.2.2.3.2 EmptyMatcher ( )
          3. 22.2.2.3.3 MatchTwoAlternatives (m1,m2 )
          4. 22.2.2.3.4 MatchSequence (m1,m2,direction )
        4. +22.2.2.4 RS: CompileAssertion
          1. 22.2.2.4.1 IsWordChar (rer,Input,e )
        5. 22.2.2.5 RS: CompileQuantifier
        6. 22.2.2.6 RS: CompileQuantifierPrefix
        7. +22.2.2.7 RS: CompileAtom
          1. 22.2.2.7.1 CharacterSetMatcher (rer,A,invert,direction )
          2. 22.2.2.7.2 BackreferenceMatcher (rer,ns,direction )
          3. 22.2.2.7.3 Canonicalize (rer,ch )
          4. 22.2.2.7.4 UpdateModifiers (rer,add,remove )
        8. 22.2.2.8 RS: CompileCharacterClass
        9. +22.2.2.9 RS: CompileToCharSet
          1. 22.2.2.9.1 CharacterRange (A,B )
          2. 22.2.2.9.2 HasEitherUnicodeFlag (rer )
          3. 22.2.2.9.3 WordCharacters (rer )
          4. 22.2.2.9.4 AllCharacters (rer )
          5. 22.2.2.9.5 MaybeSimpleCaseFolding (rer,A )
          6. 22.2.2.9.6 CharacterComplement (rer,S )
          7. 22.2.2.9.7 UnicodeMatchProperty (rer,p )
          8. 22.2.2.9.8 UnicodeMatchPropertyValue (p,v )
        10. 22.2.2.10 RS: CompileClassSetString
      3. +22.2.3 Abstract Operations for RegExp Creation
        1. 22.2.3.1 RegExpCreate (P,F )
        2. 22.2.3.2 RegExpAlloc (newTarget )
        3. 22.2.3.3 RegExpInitialize (obj,pattern,flags )
        4. 22.2.3.4 SS: ParsePattern (patternText,u,v )
      4. +22.2.4 The RegExp Constructor
        1. 22.2.4.1 RegExp (pattern,flags )
      5. +22.2.5 Properties of the RegExp Constructor
        1. +22.2.5.1 RegExp.escape (S )
          1. 22.2.5.1.1 EncodeForRegExpEscape (cp )
        2. 22.2.5.2 RegExp.prototype
        3. 22.2.5.3 get RegExp [ %Symbol.species% ]
      6. +22.2.6 Properties of the RegExp Prototype Object
        1. 22.2.6.1 RegExp.prototype.constructor
        2. 22.2.6.2 RegExp.prototype.exec (string )
        3. 22.2.6.3 get RegExp.prototype.dotAll
        4. +22.2.6.4 get RegExp.prototype.flags
          1. 22.2.6.4.1 RegExpHasFlag (R,codeUnit )
        5. 22.2.6.5 get RegExp.prototype.global
        6. 22.2.6.6 get RegExp.prototype.hasIndices
        7. 22.2.6.7 get RegExp.prototype.ignoreCase
        8. 22.2.6.8 RegExp.prototype [ %Symbol.match% ] (string )
        9. 22.2.6.9 RegExp.prototype [ %Symbol.matchAll% ] (string )
        10. 22.2.6.10 get RegExp.prototype.multiline
        11. 22.2.6.11 RegExp.prototype [ %Symbol.replace% ] (string,replaceValue )
        12. 22.2.6.12 RegExp.prototype [ %Symbol.search% ] (string )
        13. +22.2.6.13 get RegExp.prototype.source
          1. 22.2.6.13.1 EscapeRegExpPattern (P,F )
        14. 22.2.6.14 RegExp.prototype [ %Symbol.split% ] (string,limit )
        15. 22.2.6.15 get RegExp.prototype.sticky
        16. 22.2.6.16 RegExp.prototype.test (S )
        17. 22.2.6.17 RegExp.prototype.toString ( )
        18. 22.2.6.18 get RegExp.prototype.unicode
        19. 22.2.6.19 get RegExp.prototype.unicodeSets
      7. +22.2.7 Abstract Operations for RegExp Matching
        1. 22.2.7.1 RegExpExec (R,S )
        2. 22.2.7.2 RegExpBuiltinExec (R,S )
        3. 22.2.7.3 AdvanceStringIndex (S,index,unicode )
        4. 22.2.7.4 GetStringIndex (S,codePointIndex )
        5. 22.2.7.5 Match Records
        6. 22.2.7.6 GetMatchString (S,match )
        7. 22.2.7.7 GetMatchIndexPair (S,match )
        8. 22.2.7.8 MakeMatchIndicesIndexPairArray (S,indices,groupNames,hasGroups )
      8. +22.2.8 Properties of RegExp Instances
        1. 22.2.8.1 lastIndex
      9. +22.2.9 RegExp String Iterator Objects
        1. 22.2.9.1 CreateRegExpStringIterator (R,S,global,fullUnicode )
        2. +22.2.9.2 The %RegExpStringIteratorPrototype% Object
          1. 22.2.9.2.1 %RegExpStringIteratorPrototype%.next ( )
          2. 22.2.9.2.2 %RegExpStringIteratorPrototype% [ %Symbol.toStringTag% ]
        3. 22.2.9.3 Properties of RegExp String Iterator Instances
  24. +23 Indexed Collections
    1. +23.1 Array Objects
      1. +23.1.1 The Array Constructor
        1. 23.1.1.1 Array ( ...values )
      2. +23.1.2 Properties of the Array Constructor
        1. 23.1.2.1 Array.from (items [ ,mapper [ ,thisArg ] ] )
        2. 23.1.2.2 Array.isArray (arg )
        3. 23.1.2.3 Array.of ( ...items )
        4. 23.1.2.4 Array.prototype
        5. 23.1.2.5 get Array [ %Symbol.species% ]
      3. +23.1.3 Properties of the Array Prototype Object
        1. 23.1.3.1 Array.prototype.at (index )
        2. +23.1.3.2 Array.prototype.concat ( ...items )
          1. 23.1.3.2.1 IsConcatSpreadable (O )
        3. 23.1.3.3 Array.prototype.constructor
        4. 23.1.3.4 Array.prototype.copyWithin (target,start [ ,end ] )
        5. 23.1.3.5 Array.prototype.entries ( )
        6. 23.1.3.6 Array.prototype.every (callback [ ,thisArg ] )
        7. 23.1.3.7 Array.prototype.fill (value [ ,start [ ,end ] ] )
        8. 23.1.3.8 Array.prototype.filter (callback [ ,thisArg ] )
        9. 23.1.3.9 Array.prototype.find (predicate [ ,thisArg ] )
        10. 23.1.3.10 Array.prototype.findIndex (predicate [ ,thisArg ] )
        11. 23.1.3.11 Array.prototype.findLast (predicate [ ,thisArg ] )
        12. +23.1.3.12 Array.prototype.findLastIndex (predicate [ ,thisArg ] )
          1. 23.1.3.12.1 FindViaPredicate (O,len,direction,predicate,thisArg )
        13. +23.1.3.13 Array.prototype.flat ( [depth ] )
          1. 23.1.3.13.1 FlattenIntoArray (target,source,sourceLen,start,depth [ ,mapperFunction [ ,thisArg ] ] )
        14. 23.1.3.14 Array.prototype.flatMap (mapperFunction [ ,thisArg ] )
        15. 23.1.3.15 Array.prototype.forEach (callback [ ,thisArg ] )
        16. 23.1.3.16 Array.prototype.includes (searchElement [ ,fromIndex ] )
        17. 23.1.3.17 Array.prototype.indexOf (searchElement [ ,fromIndex ] )
        18. 23.1.3.18 Array.prototype.join (separator )
        19. 23.1.3.19 Array.prototype.keys ( )
        20. 23.1.3.20 Array.prototype.lastIndexOf (searchElement [ ,fromIndex ] )
        21. 23.1.3.21 Array.prototype.map (callback [ ,thisArg ] )
        22. 23.1.3.22 Array.prototype.pop ( )
        23. 23.1.3.23 Array.prototype.push ( ...items )
        24. 23.1.3.24 Array.prototype.reduce (callback [ ,initialValue ] )
        25. 23.1.3.25 Array.prototype.reduceRight (callback [ ,initialValue ] )
        26. 23.1.3.26 Array.prototype.reverse ( )
        27. 23.1.3.27 Array.prototype.shift ( )
        28. 23.1.3.28 Array.prototype.slice (start,end )
        29. 23.1.3.29 Array.prototype.some (callback [ ,thisArg ] )
        30. +23.1.3.30 Array.prototype.sort (comparator )
          1. 23.1.3.30.1 SortIndexedProperties (obj,len,SortCompare,holes )
          2. 23.1.3.30.2 CompareArrayElements (x,y,comparator )
        31. 23.1.3.31 Array.prototype.splice (start,deleteCount, ...items )
        32. 23.1.3.32 Array.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )
        33. 23.1.3.33 Array.prototype.toReversed ( )
        34. 23.1.3.34 Array.prototype.toSorted (comparator )
        35. 23.1.3.35 Array.prototype.toSpliced (start,skipCount, ...items )
        36. 23.1.3.36 Array.prototype.toString ( )
        37. 23.1.3.37 Array.prototype.unshift ( ...items )
        38. 23.1.3.38 Array.prototype.values ( )
        39. 23.1.3.39 Array.prototype.with (index,value )
        40. 23.1.3.40 Array.prototype [ %Symbol.iterator% ] ( )
        41. 23.1.3.41 Array.prototype [ %Symbol.unscopables% ]
      4. +23.1.4 Properties of Array Instances
        1. 23.1.4.1 length
      5. +23.1.5 Array Iterator Objects
        1. 23.1.5.1 CreateArrayIterator (array,kind )
        2. +23.1.5.2 The %ArrayIteratorPrototype% Object
          1. 23.1.5.2.1 %ArrayIteratorPrototype%.next ( )
          2. 23.1.5.2.2 %ArrayIteratorPrototype% [ %Symbol.toStringTag% ]
        3. 23.1.5.3 Properties of Array Iterator Instances
    2. +23.2 TypedArray Objects
      1. +23.2.1 The %TypedArray% Intrinsic Object
        1. 23.2.1.1 %TypedArray% ( )
      2. +23.2.2 Properties of the %TypedArray% Intrinsic Object
        1. 23.2.2.1 %TypedArray%.from (source [ ,mapper [ ,thisArg ] ] )
        2. 23.2.2.2 %TypedArray%.of ( ...items )
        3. 23.2.2.3 %TypedArray%.prototype
        4. 23.2.2.4 get %TypedArray% [ %Symbol.species% ]
      3. +23.2.3 Properties of the %TypedArray% Prototype Object
        1. 23.2.3.1 %TypedArray%.prototype.at (index )
        2. 23.2.3.2 get %TypedArray%.prototype.buffer
        3. 23.2.3.3 get %TypedArray%.prototype.byteLength
        4. 23.2.3.4 get %TypedArray%.prototype.byteOffset
        5. 23.2.3.5 %TypedArray%.prototype.constructor
        6. 23.2.3.6 %TypedArray%.prototype.copyWithin (target,start [ ,end ] )
        7. 23.2.3.7 %TypedArray%.prototype.entries ( )
        8. 23.2.3.8 %TypedArray%.prototype.every (callback [ ,thisArg ] )
        9. 23.2.3.9 %TypedArray%.prototype.fill (value [ ,start [ ,end ] ] )
        10. 23.2.3.10 %TypedArray%.prototype.filter (callback [ ,thisArg ] )
        11. 23.2.3.11 %TypedArray%.prototype.find (predicate [ ,thisArg ] )
        12. 23.2.3.12 %TypedArray%.prototype.findIndex (predicate [ ,thisArg ] )
        13. 23.2.3.13 %TypedArray%.prototype.findLast (predicate [ ,thisArg ] )
        14. 23.2.3.14 %TypedArray%.prototype.findLastIndex (predicate [ ,thisArg ] )
        15. 23.2.3.15 %TypedArray%.prototype.forEach (callback [ ,thisArg ] )
        16. 23.2.3.16 %TypedArray%.prototype.includes (searchElement [ ,fromIndex ] )
        17. 23.2.3.17 %TypedArray%.prototype.indexOf (searchElement [ ,fromIndex ] )
        18. 23.2.3.18 %TypedArray%.prototype.join (separator )
        19. 23.2.3.19 %TypedArray%.prototype.keys ( )
        20. 23.2.3.20 %TypedArray%.prototype.lastIndexOf (searchElement [ ,fromIndex ] )
        21. 23.2.3.21 get %TypedArray%.prototype.length
        22. 23.2.3.22 %TypedArray%.prototype.map (callback [ ,thisArg ] )
        23. 23.2.3.23 %TypedArray%.prototype.reduce (callback [ ,initialValue ] )
        24. 23.2.3.24 %TypedArray%.prototype.reduceRight (callback [ ,initialValue ] )
        25. 23.2.3.25 %TypedArray%.prototype.reverse ( )
        26. +23.2.3.26 %TypedArray%.prototype.set (source [ ,offset ] )
          1. 23.2.3.26.1 SetTypedArrayFromArrayLike (target,targetOffset,source )
          2. 23.2.3.26.2 SetTypedArrayFromTypedArray (target,targetOffset,source )
        27. 23.2.3.27 %TypedArray%.prototype.slice (start,end )
        28. 23.2.3.28 %TypedArray%.prototype.some (callback [ ,thisArg ] )
        29. 23.2.3.29 %TypedArray%.prototype.sort (comparator )
        30. 23.2.3.30 %TypedArray%.prototype.subarray (start,end )
        31. 23.2.3.31 %TypedArray%.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )
        32. 23.2.3.32 %TypedArray%.prototype.toReversed ( )
        33. 23.2.3.33 %TypedArray%.prototype.toSorted (comparator )
        34. 23.2.3.34 %TypedArray%.prototype.toString ( )
        35. 23.2.3.35 %TypedArray%.prototype.values ( )
        36. 23.2.3.36 %TypedArray%.prototype.with (index,value )
        37. 23.2.3.37 %TypedArray%.prototype [ %Symbol.iterator% ] ( )
        38. 23.2.3.38 get %TypedArray%.prototype [ %Symbol.toStringTag% ]
      4. +23.2.4 Abstract Operations for TypedArray Objects
        1. 23.2.4.1 TypedArrayCreateFromConstructor (constructor,argumentList )
        2. 23.2.4.2 TypedArrayCreateSameType (exemplar,length )
        3. 23.2.4.3 TypedArraySpeciesCreate (exemplar,argumentList )
        4. 23.2.4.4 ValidateTypedArray (O,order )
        5. 23.2.4.5 TypedArrayElementSize (O )
        6. 23.2.4.6 TypedArrayElementType (O )
        7. 23.2.4.7 CompareTypedArrayElements (x,y,comparator )
      5. +23.2.5 TheTypedArray Constructors
        1. +23.2.5.1TypedArray ( ...args )
          1. 23.2.5.1.1 AllocateTypedArray (constructorName,newTarget,defaultProto [ ,length ] )
          2. 23.2.5.1.2 InitializeTypedArrayFromTypedArray (O,srcArray )
          3. 23.2.5.1.3 InitializeTypedArrayFromArrayBuffer (O,buffer,byteOffset,length )
          4. 23.2.5.1.4 InitializeTypedArrayFromList (O,values )
          5. 23.2.5.1.5 InitializeTypedArrayFromArrayLike (O,arrayLike )
          6. 23.2.5.1.6 AllocateTypedArrayBuffer (O,length )
      6. +23.2.6 Properties of theTypedArray Constructors
        1. 23.2.6.1TypedArray.BYTES_PER_ELEMENT
        2. 23.2.6.2TypedArray.prototype
      7. +23.2.7 Properties of theTypedArray Prototype Objects
        1. 23.2.7.1TypedArray.prototype.BYTES_PER_ELEMENT
        2. 23.2.7.2TypedArray.prototype.constructor
      8. 23.2.8 Properties ofTypedArray Instances
    3. +23.3 Uint8Array Objects
      1. +23.3.1 Additional Properties of the Uint8Array Constructor
        1. 23.3.1.1 Uint8Array.fromBase64 (string [ ,options ] )
        2. 23.3.1.2 Uint8Array.fromHex (string )
      2. +23.3.2 Additional Properties of the Uint8Array Prototype Object
        1. 23.3.2.1 Uint8Array.prototype.setFromBase64 (string [ ,options ] )
        2. 23.3.2.2 Uint8Array.prototype.setFromHex (string )
        3. 23.3.2.3 Uint8Array.prototype.toBase64 ( [options ] )
        4. 23.3.2.4 Uint8Array.prototype.toHex ( )
      3. +23.3.3 Abstract Operations for Uint8Array Objects
        1. 23.3.3.1 ValidateUint8Array (ta )
        2. 23.3.3.2 GetUint8ArrayBytes (ta )
        3. 23.3.3.3 SetUint8ArrayBytes (into,bytes )
        4. 23.3.3.4 SkipAsciiWhitespace (string,index )
        5. 23.3.3.5 DecodeFinalBase64Chunk (chunk,throwOnExtraBits )
        6. 23.3.3.6 DecodeFullLengthBase64Chunk (chunk )
        7. 23.3.3.7 FromBase64 (string,alphabet,lastChunkHandling [ ,maxLength ] )
        8. 23.3.3.8 FromHex (string [ ,maxLength ] )
  25. +24 Keyed Collections
    1. +24.1 Map Objects
      1. +24.1.1 The Map Constructor
        1. 24.1.1.1 Map ( [iterable ] )
        2. 24.1.1.2 AddEntriesFromIterable (target,iterable,adder )
      2. +24.1.2 Properties of the Map Constructor
        1. 24.1.2.1 Map.groupBy (items,callback )
        2. 24.1.2.2 Map.prototype
        3. 24.1.2.3 get Map [ %Symbol.species% ]
      3. +24.1.3 Properties of the Map Prototype Object
        1. 24.1.3.1 Map.prototype.clear ( )
        2. 24.1.3.2 Map.prototype.constructor
        3. 24.1.3.3 Map.prototype.delete (key )
        4. 24.1.3.4 Map.prototype.entries ( )
        5. 24.1.3.5 Map.prototype.forEach (callback [ ,thisArg ] )
        6. 24.1.3.6 Map.prototype.get (key )
        7. 24.1.3.7 Map.prototype.has (key )
        8. 24.1.3.8 Map.prototype.keys ( )
        9. 24.1.3.9 Map.prototype.set (key,value )
        10. 24.1.3.10 get Map.prototype.size
        11. 24.1.3.11 Map.prototype.values ( )
        12. 24.1.3.12 Map.prototype [ %Symbol.iterator% ] ( )
        13. 24.1.3.13 Map.prototype [ %Symbol.toStringTag% ]
      4. 24.1.4 Properties of Map Instances
      5. +24.1.5 Map Iterator Objects
        1. 24.1.5.1 CreateMapIterator (map,kind )
        2. +24.1.5.2 The %MapIteratorPrototype% Object
          1. 24.1.5.2.1 %MapIteratorPrototype%.next ( )
          2. 24.1.5.2.2 %MapIteratorPrototype% [ %Symbol.toStringTag% ]
    2. +24.2 Set Objects
      1. +24.2.1 Abstract Operations For Set Objects
        1. 24.2.1.1 Set Records
        2. 24.2.1.2 GetSetRecord (obj )
        3. 24.2.1.3 SetDataHas (setData,value )
        4. 24.2.1.4 SetDataIndex (setData,value )
        5. 24.2.1.5 SetDataSize (setData )
      2. +24.2.2 The Set Constructor
        1. 24.2.2.1 Set ( [iterable ] )
      3. +24.2.3 Properties of the Set Constructor
        1. 24.2.3.1 Set.prototype
        2. 24.2.3.2 get Set [ %Symbol.species% ]
      4. +24.2.4 Properties of the Set Prototype Object
        1. 24.2.4.1 Set.prototype.add (value )
        2. 24.2.4.2 Set.prototype.clear ( )
        3. 24.2.4.3 Set.prototype.constructor
        4. 24.2.4.4 Set.prototype.delete (value )
        5. 24.2.4.5 Set.prototype.difference (other )
        6. 24.2.4.6 Set.prototype.entries ( )
        7. 24.2.4.7 Set.prototype.forEach (callback [ ,thisArg ] )
        8. 24.2.4.8 Set.prototype.has (value )
        9. 24.2.4.9 Set.prototype.intersection (other )
        10. 24.2.4.10 Set.prototype.isDisjointFrom (other )
        11. 24.2.4.11 Set.prototype.isSubsetOf (other )
        12. 24.2.4.12 Set.prototype.isSupersetOf (other )
        13. 24.2.4.13 Set.prototype.keys ( )
        14. 24.2.4.14 get Set.prototype.size
        15. 24.2.4.15 Set.prototype.symmetricDifference (other )
        16. 24.2.4.16 Set.prototype.union (other )
        17. 24.2.4.17 Set.prototype.values ( )
        18. 24.2.4.18 Set.prototype [ %Symbol.iterator% ] ( )
        19. 24.2.4.19 Set.prototype [ %Symbol.toStringTag% ]
      5. 24.2.5 Properties of Set Instances
      6. +24.2.6 Set Iterator Objects
        1. 24.2.6.1 CreateSetIterator (set,kind )
        2. +24.2.6.2 The %SetIteratorPrototype% Object
          1. 24.2.6.2.1 %SetIteratorPrototype%.next ( )
          2. 24.2.6.2.2 %SetIteratorPrototype% [ %Symbol.toStringTag% ]
    3. +24.3 WeakMap Objects
      1. +24.3.1 The WeakMap Constructor
        1. 24.3.1.1 WeakMap ( [iterable ] )
      2. +24.3.2 Properties of the WeakMap Constructor
        1. 24.3.2.1 WeakMap.prototype
      3. +24.3.3 Properties of the WeakMap Prototype Object
        1. 24.3.3.1 WeakMap.prototype.constructor
        2. 24.3.3.2 WeakMap.prototype.delete (key )
        3. 24.3.3.3 WeakMap.prototype.get (key )
        4. 24.3.3.4 WeakMap.prototype.has (key )
        5. 24.3.3.5 WeakMap.prototype.set (key,value )
        6. 24.3.3.6 WeakMap.prototype [ %Symbol.toStringTag% ]
      4. 24.3.4 Properties of WeakMap Instances
    4. +24.4 WeakSet Objects
      1. +24.4.1 The WeakSet Constructor
        1. 24.4.1.1 WeakSet ( [iterable ] )
      2. +24.4.2 Properties of the WeakSet Constructor
        1. 24.4.2.1 WeakSet.prototype
      3. +24.4.3 Properties of the WeakSet Prototype Object
        1. 24.4.3.1 WeakSet.prototype.add (value )
        2. 24.4.3.2 WeakSet.prototype.constructor
        3. 24.4.3.3 WeakSet.prototype.delete (value )
        4. 24.4.3.4 WeakSet.prototype.has (value )
        5. 24.4.3.5 WeakSet.prototype [ %Symbol.toStringTag% ]
      4. 24.4.4 Properties of WeakSet Instances
    5. +24.5 Abstract Operations for Keyed Collections
      1. 24.5.1 CanonicalizeKeyedCollectionKey (key )
  26. +25 Structured Data
    1. +25.1 ArrayBuffer Objects
      1. 25.1.1 Notation
      2. 25.1.2 Fixed-length and Resizable ArrayBuffer Objects
      3. +25.1.3 Abstract Operations For ArrayBuffer Objects
        1. 25.1.3.1 AllocateArrayBuffer (constructor,byteLength [ ,maxByteLength ] )
        2. 25.1.3.2 ArrayBufferByteLength (arrayBuffer,order )
        3. 25.1.3.3 ArrayBufferCopyAndDetach (arrayBuffer,newLength,preserveResizability )
        4. 25.1.3.4 IsDetachedBuffer (arrayBuffer )
        5. 25.1.3.5 DetachArrayBuffer (arrayBuffer [ ,key ] )
        6. 25.1.3.6 CloneArrayBuffer (srcBuffer,srcByteOffset,srcLength )
        7. 25.1.3.7 GetArrayBufferMaxByteLengthOption (options )
        8. 25.1.3.8 HostResizeArrayBuffer (buffer,newByteLength )
        9. 25.1.3.9 IsFixedLengthArrayBuffer (arrayBuffer )
        10. 25.1.3.10 IsUnsignedElementType (type )
        11. 25.1.3.11 IsUnclampedIntegerElementType (type )
        12. 25.1.3.12 IsBigIntElementType (type )
        13. 25.1.3.13 IsNoTearConfiguration (type,order )
        14. 25.1.3.14 RawBytesToNumeric (type,rawBytes,isLittleEndian )
        15. 25.1.3.15 GetRawBytesFromSharedBlock (block,byteIndex,type,isTypedArray,order )
        16. 25.1.3.16 GetValueFromBuffer (arrayBuffer,byteIndex,type,isTypedArray,order [ ,isLittleEndian ] )
        17. 25.1.3.17 NumericToRawBytes (type,value,isLittleEndian )
        18. 25.1.3.18 SetValueInBuffer (arrayBuffer,byteIndex,type,value,isTypedArray,order [ ,isLittleEndian ] )
        19. 25.1.3.19 GetModifySetValueInBuffer (arrayBuffer,byteIndex,type,value,op )
      4. +25.1.4 The ArrayBuffer Constructor
        1. 25.1.4.1 ArrayBuffer (length [ ,options ] )
      5. +25.1.5 Properties of the ArrayBuffer Constructor
        1. 25.1.5.1 ArrayBuffer.isView (arg )
        2. 25.1.5.2 ArrayBuffer.prototype
        3. 25.1.5.3 get ArrayBuffer [ %Symbol.species% ]
      6. +25.1.6 Properties of the ArrayBuffer Prototype Object
        1. 25.1.6.1 get ArrayBuffer.prototype.byteLength
        2. 25.1.6.2 ArrayBuffer.prototype.constructor
        3. 25.1.6.3 get ArrayBuffer.prototype.detached
        4. 25.1.6.4 get ArrayBuffer.prototype.maxByteLength
        5. 25.1.6.5 get ArrayBuffer.prototype.resizable
        6. 25.1.6.6 ArrayBuffer.prototype.resize (newLength )
        7. 25.1.6.7 ArrayBuffer.prototype.slice (start,end )
        8. 25.1.6.8 ArrayBuffer.prototype.transfer ( [newLength ] )
        9. 25.1.6.9 ArrayBuffer.prototype.transferToFixedLength ( [newLength ] )
        10. 25.1.6.10 ArrayBuffer.prototype [ %Symbol.toStringTag% ]
      7. 25.1.7 Properties of ArrayBuffer Instances
      8. 25.1.8 Resizable ArrayBuffer Guidelines
    2. +25.2 SharedArrayBuffer Objects
      1. 25.2.1 Fixed-length and Growable SharedArrayBuffer Objects
      2. +25.2.2 Abstract Operations for SharedArrayBuffer Objects
        1. 25.2.2.1 AllocateSharedArrayBuffer (constructor,byteLength [ ,maxByteLength ] )
        2. 25.2.2.2 IsSharedArrayBuffer (obj )
        3. 25.2.2.3 HostGrowSharedArrayBuffer (buffer,newByteLength )
      3. +25.2.3 The SharedArrayBuffer Constructor
        1. 25.2.3.1 SharedArrayBuffer (length [ ,options ] )
      4. +25.2.4 Properties of the SharedArrayBuffer Constructor
        1. 25.2.4.1 SharedArrayBuffer.prototype
        2. 25.2.4.2 get SharedArrayBuffer [ %Symbol.species% ]
      5. +25.2.5 Properties of the SharedArrayBuffer Prototype Object
        1. 25.2.5.1 get SharedArrayBuffer.prototype.byteLength
        2. 25.2.5.2 SharedArrayBuffer.prototype.constructor
        3. 25.2.5.3 SharedArrayBuffer.prototype.grow (newLength )
        4. 25.2.5.4 get SharedArrayBuffer.prototype.growable
        5. 25.2.5.5 get SharedArrayBuffer.prototype.maxByteLength
        6. 25.2.5.6 SharedArrayBuffer.prototype.slice (start,end )
        7. 25.2.5.7 SharedArrayBuffer.prototype [ %Symbol.toStringTag% ]
      6. 25.2.6 Properties of SharedArrayBuffer Instances
      7. 25.2.7 Growable SharedArrayBuffer Guidelines
    3. +25.3 DataView Objects
      1. +25.3.1 Abstract Operations For DataView Objects
        1. 25.3.1.1 DataView With Buffer Witness Records
        2. 25.3.1.2 MakeDataViewWithBufferWitnessRecord (obj,order )
        3. 25.3.1.3 GetViewByteLength (viewRecord )
        4. 25.3.1.4 IsViewOutOfBounds (viewRecord )
        5. 25.3.1.5 GetViewValue (view,requestIndex,isLittleEndian,type )
        6. 25.3.1.6 SetViewValue (view,requestIndex,isLittleEndian,type,value )
      2. +25.3.2 The DataView Constructor
        1. 25.3.2.1 DataView (buffer [ ,byteOffset [ ,byteLength ] ] )
      3. +25.3.3 Properties of the DataView Constructor
        1. 25.3.3.1 DataView.prototype
      4. +25.3.4 Properties of the DataView Prototype Object
        1. 25.3.4.1 get DataView.prototype.buffer
        2. 25.3.4.2 get DataView.prototype.byteLength
        3. 25.3.4.3 get DataView.prototype.byteOffset
        4. 25.3.4.4 DataView.prototype.constructor
        5. 25.3.4.5 DataView.prototype.getBigInt64 (byteOffset [ ,littleEndian ] )
        6. 25.3.4.6 DataView.prototype.getBigUint64 (byteOffset [ ,littleEndian ] )
        7. 25.3.4.7 DataView.prototype.getFloat16 (byteOffset [ ,littleEndian ] )
        8. 25.3.4.8 DataView.prototype.getFloat32 (byteOffset [ ,littleEndian ] )
        9. 25.3.4.9 DataView.prototype.getFloat64 (byteOffset [ ,littleEndian ] )
        10. 25.3.4.10 DataView.prototype.getInt8 (byteOffset )
        11. 25.3.4.11 DataView.prototype.getInt16 (byteOffset [ ,littleEndian ] )
        12. 25.3.4.12 DataView.prototype.getInt32 (byteOffset [ ,littleEndian ] )
        13. 25.3.4.13 DataView.prototype.getUint8 (byteOffset )
        14. 25.3.4.14 DataView.prototype.getUint16 (byteOffset [ ,littleEndian ] )
        15. 25.3.4.15 DataView.prototype.getUint32 (byteOffset [ ,littleEndian ] )
        16. 25.3.4.16 DataView.prototype.setBigInt64 (byteOffset,value [ ,littleEndian ] )
        17. 25.3.4.17 DataView.prototype.setBigUint64 (byteOffset,value [ ,littleEndian ] )
        18. 25.3.4.18 DataView.prototype.setFloat16 (byteOffset,value [ ,littleEndian ] )
        19. 25.3.4.19 DataView.prototype.setFloat32 (byteOffset,value [ ,littleEndian ] )
        20. 25.3.4.20 DataView.prototype.setFloat64 (byteOffset,value [ ,littleEndian ] )
        21. 25.3.4.21 DataView.prototype.setInt8 (byteOffset,value )
        22. 25.3.4.22 DataView.prototype.setInt16 (byteOffset,value [ ,littleEndian ] )
        23. 25.3.4.23 DataView.prototype.setInt32 (byteOffset,value [ ,littleEndian ] )
        24. 25.3.4.24 DataView.prototype.setUint8 (byteOffset,value )
        25. 25.3.4.25 DataView.prototype.setUint16 (byteOffset,value [ ,littleEndian ] )
        26. 25.3.4.26 DataView.prototype.setUint32 (byteOffset,value [ ,littleEndian ] )
        27. 25.3.4.27 DataView.prototype [ %Symbol.toStringTag% ]
      5. 25.3.5 Properties of DataView Instances
    4. +25.4 The Atomics Object
      1. 25.4.1 Waiter Record
      2. 25.4.2 WaiterList Records
      3. +25.4.3 Abstract Operations for Atomics
        1. 25.4.3.1 ValidateIntegerTypedArray (typedArray,waitable )
        2. 25.4.3.2 ValidateAtomicAccess (taRecord,requestIndex )
        3. 25.4.3.3 ValidateAtomicAccessOnIntegerTypedArray (typedArray,requestIndex )
        4. 25.4.3.4 RevalidateAtomicAccess (typedArray,byteIndexInBuffer )
        5. 25.4.3.5 GetWaiterList (block,i )
        6. 25.4.3.6 EnterCriticalSection (WL )
        7. 25.4.3.7 LeaveCriticalSection (WL )
        8. 25.4.3.8 AddWaiter (WL,waiterRecord )
        9. 25.4.3.9 RemoveWaiter (WL,waiterRecord )
        10. 25.4.3.10 RemoveWaiters (WL,c )
        11. 25.4.3.11 SuspendThisAgent (WL,waiterRecord )
        12. 25.4.3.12 NotifyWaiter (WL,waiterRecord )
        13. 25.4.3.13 EnqueueResolveInAgentJob (agentSignifier,promiseCapability,resolution )
        14. 25.4.3.14 DoWait (mode,typedArray,index,value,timeout )
        15. 25.4.3.15 EnqueueAtomicsWaitAsyncTimeoutJob (WL,waiterRecord )
        16. 25.4.3.16 AtomicCompareExchangeInSharedBlock (block,byteIndexInBuffer,elementSize,expectedBytes,replacementBytes )
        17. 25.4.3.17 AtomicReadModifyWrite (typedArray,index,value,op )
        18. 25.4.3.18 ByteListBitwiseOp (op,xBytes,yBytes )
        19. 25.4.3.19 ByteListEqual (xBytes,yBytes )
      4. 25.4.4 Atomics.add (typedArray,index,value )
      5. 25.4.5 Atomics.and (typedArray,index,value )
      6. 25.4.6 Atomics.compareExchange (typedArray,index,expectedValue,replacementValue )
      7. 25.4.7 Atomics.exchange (typedArray,index,value )
      8. 25.4.8 Atomics.isLockFree (size )
      9. 25.4.9 Atomics.load (typedArray,index )
      10. 25.4.10 Atomics.or (typedArray,index,value )
      11. 25.4.11 Atomics.store (typedArray,index,value )
      12. 25.4.12 Atomics.sub (typedArray,index,value )
      13. 25.4.13 Atomics.wait (typedArray,index,value,timeout )
      14. 25.4.14 Atomics.waitAsync (typedArray,index,value,timeout )
      15. 25.4.15 Atomics.notify (typedArray,index,count )
      16. 25.4.16 Atomics.xor (typedArray,index,value )
      17. 25.4.17 Atomics [ %Symbol.toStringTag% ]
    5. +25.5 The JSON Object
      1. +25.5.1 JSON.parse (text [ ,reviver ] )
        1. 25.5.1.1 ParseJSON (text )
        2. 25.5.1.2 InternalizeJSONProperty (holder,name,reviver )
      2. +25.5.2 JSON.stringify (value [ ,replacer [ ,space ] ] )
        1. 25.5.2.1 JSON Serialization Record
        2. 25.5.2.2 SerializeJSONProperty (state,key,holder )
        3. 25.5.2.3 QuoteJSONString (value )
        4. 25.5.2.4 UnicodeEscape (C )
        5. 25.5.2.5 SerializeJSONObject (state,value )
        6. 25.5.2.6 SerializeJSONArray (state,value )
      3. 25.5.3 JSON [ %Symbol.toStringTag% ]
  27. +26 Managing Memory
    1. +26.1 WeakRef Objects
      1. +26.1.1 The WeakRef Constructor
        1. 26.1.1.1 WeakRef (target )
      2. +26.1.2 Properties of the WeakRef Constructor
        1. 26.1.2.1 WeakRef.prototype
      3. +26.1.3 Properties of the WeakRef Prototype Object
        1. 26.1.3.1 WeakRef.prototype.constructor
        2. 26.1.3.2 WeakRef.prototype.deref ( )
        3. 26.1.3.3 WeakRef.prototype [ %Symbol.toStringTag% ]
      4. +26.1.4 WeakRef Abstract Operations
        1. 26.1.4.1 WeakRefDeref (weakRef )
      5. 26.1.5 Properties of WeakRef Instances
    2. +26.2 FinalizationRegistry Objects
      1. +26.2.1 The FinalizationRegistry Constructor
        1. 26.2.1.1 FinalizationRegistry (cleanupCallback )
      2. +26.2.2 Properties of the FinalizationRegistry Constructor
        1. 26.2.2.1 FinalizationRegistry.prototype
      3. +26.2.3 Properties of the FinalizationRegistry Prototype Object
        1. 26.2.3.1 FinalizationRegistry.prototype.constructor
        2. 26.2.3.2 FinalizationRegistry.prototype.register (target,heldValue [ ,unregisterToken ] )
        3. 26.2.3.3 FinalizationRegistry.prototype.unregister (unregisterToken )
        4. 26.2.3.4 FinalizationRegistry.prototype [ %Symbol.toStringTag% ]
      4. 26.2.4 Properties of FinalizationRegistry Instances
  28. +27 Control Abstraction Objects
    1. +27.1 Iteration
      1. +27.1.1 Common Iteration Interfaces
        1. 27.1.1.1 The Iterable Interface
        2. 27.1.1.2 The Iterator Interface
        3. 27.1.1.3 The Async Iterable Interface
        4. 27.1.1.4 The Async Iterator Interface
        5. 27.1.1.5 The IteratorResult Interface
      2. +27.1.2 Iterator Helper Objects
        1. +27.1.2.1 The %IteratorHelperPrototype% Object
          1. 27.1.2.1.1 %IteratorHelperPrototype%.next ( )
          2. 27.1.2.1.2 %IteratorHelperPrototype%.return ( )
          3. 27.1.2.1.3 %IteratorHelperPrototype% [ %Symbol.toStringTag% ]
      3. +27.1.3 Iterator Objects
        1. +27.1.3.1 The Iterator Constructor
          1. 27.1.3.1.1 Iterator ( )
        2. +27.1.3.2 Properties of the Iterator Constructor
          1. +27.1.3.2.1 Iterator.from (O )
            1. +27.1.3.2.1.1 The %WrapForValidIteratorPrototype% Object
              1. 27.1.3.2.1.1.1 %WrapForValidIteratorPrototype%.next ( )
              2. 27.1.3.2.1.1.2 %WrapForValidIteratorPrototype%.return ( )
          2. 27.1.3.2.2 Iterator.prototype
        3. +27.1.3.3 Properties of the Iterator Prototype Object
          1. +27.1.3.3.1 Iterator.prototype.constructor
            1. 27.1.3.3.1.1 get Iterator.prototype.constructor
            2. 27.1.3.3.1.2 set Iterator.prototype.constructor
          2. 27.1.3.3.2 Iterator.prototype.drop (limit )
          3. 27.1.3.3.3 Iterator.prototype.every (predicate )
          4. 27.1.3.3.4 Iterator.prototype.filter (predicate )
          5. 27.1.3.3.5 Iterator.prototype.find (predicate )
          6. 27.1.3.3.6 Iterator.prototype.flatMap (mapper )
          7. 27.1.3.3.7 Iterator.prototype.forEach (procedure )
          8. 27.1.3.3.8 Iterator.prototype.map (mapper )
          9. 27.1.3.3.9 Iterator.prototype.reduce (reducer [ ,initialValue ] )
          10. 27.1.3.3.10 Iterator.prototype.some (predicate )
          11. 27.1.3.3.11 Iterator.prototype.take (limit )
          12. 27.1.3.3.12 Iterator.prototype.toArray ( )
          13. 27.1.3.3.13 Iterator.prototype [ %Symbol.iterator% ] ( )
          14. +27.1.3.3.14 Iterator.prototype [ %Symbol.toStringTag% ]
            1. 27.1.3.3.14.1 get Iterator.prototype [ %Symbol.toStringTag% ]
            2. 27.1.3.3.14.2 set Iterator.prototype [ %Symbol.toStringTag% ]
      4. +27.1.4 The %AsyncIteratorPrototype% Object
        1. 27.1.4.1 %AsyncIteratorPrototype% [ %Symbol.asyncIterator% ] ( )
      5. +27.1.5 Async-from-Sync Iterator Objects
        1. 27.1.5.1 CreateAsyncFromSyncIterator (syncIteratorRecord )
        2. +27.1.5.2 The %AsyncFromSyncIteratorPrototype% Object
          1. 27.1.5.2.1 %AsyncFromSyncIteratorPrototype%.next ( [value ] )
          2. 27.1.5.2.2 %AsyncFromSyncIteratorPrototype%.return ( [value ] )
          3. 27.1.5.2.3 %AsyncFromSyncIteratorPrototype%.throw ( [value ] )
        3. 27.1.5.3 Properties of Async-from-Sync Iterator Instances
        4. 27.1.5.4 AsyncFromSyncIteratorContinuation (result,promiseCapability,syncIteratorRecord,closeOnRejection )
    2. +27.2 Promise Objects
      1. +27.2.1 Promise Abstract Operations
        1. +27.2.1.1 PromiseCapability Records
          1. 27.2.1.1.1 IfAbruptRejectPromise (value,capability )
        2. 27.2.1.2 PromiseReaction Records
        3. +27.2.1.3 CreateResolvingFunctions (promise )
          1. 27.2.1.3.1 Promise Reject Functions
          2. 27.2.1.3.2 Promise Resolve Functions
        4. 27.2.1.4 FulfillPromise (promise,value )
        5. 27.2.1.5 NewPromiseCapability (C )
        6. 27.2.1.6 IsPromise (x )
        7. 27.2.1.7 RejectPromise (promise,reason )
        8. 27.2.1.8 TriggerPromiseReactions (reactions,argument )
        9. 27.2.1.9 HostPromiseRejectionTracker (promise,operation )
      2. +27.2.2 Promise Jobs
        1. 27.2.2.1 NewPromiseReactionJob (reaction,argument )
        2. 27.2.2.2 NewPromiseResolveThenableJob (promiseToResolve,thenable,then )
      3. +27.2.3 The Promise Constructor
        1. 27.2.3.1 Promise (executor )
      4. +27.2.4 Properties of the Promise Constructor
        1. +27.2.4.1 Promise.all (iterable )
          1. 27.2.4.1.1 GetPromiseResolve (promiseConstructor )
          2. 27.2.4.1.2 PerformPromiseAll (iteratorRecord,constructor,resultCapability,promiseResolve )
          3. 27.2.4.1.3Promise.all Resolve Element Functions
        2. +27.2.4.2 Promise.allSettled (iterable )
          1. 27.2.4.2.1 PerformPromiseAllSettled (iteratorRecord,constructor,resultCapability,promiseResolve )
          2. 27.2.4.2.2Promise.allSettled Resolve Element Functions
          3. 27.2.4.2.3Promise.allSettled Reject Element Functions
        3. +27.2.4.3 Promise.any (iterable )
          1. 27.2.4.3.1 PerformPromiseAny (iteratorRecord,constructor,resultCapability,promiseResolve )
          2. 27.2.4.3.2Promise.any Reject Element Functions
        4. 27.2.4.4 Promise.prototype
        5. +27.2.4.5 Promise.race (iterable )
          1. 27.2.4.5.1 PerformPromiseRace (iteratorRecord,constructor,resultCapability,promiseResolve )
        6. 27.2.4.6 Promise.reject (r )
        7. +27.2.4.7 Promise.resolve (x )
          1. 27.2.4.7.1 PromiseResolve (C,x )
        8. 27.2.4.8 Promise.try (callback, ...args )
        9. 27.2.4.9 Promise.withResolvers ( )
        10. 27.2.4.10 get Promise [ %Symbol.species% ]
      5. +27.2.5 Properties of the Promise Prototype Object
        1. 27.2.5.1 Promise.prototype.catch (onRejected )
        2. 27.2.5.2 Promise.prototype.constructor
        3. 27.2.5.3 Promise.prototype.finally (onFinally )
        4. +27.2.5.4 Promise.prototype.then (onFulfilled,onRejected )
          1. 27.2.5.4.1 PerformPromiseThen (promise,onFulfilled,onRejected [ ,resultCapability ] )
        5. 27.2.5.5 Promise.prototype [ %Symbol.toStringTag% ]
      6. 27.2.6 Properties of Promise Instances
    3. +27.3 GeneratorFunction Objects
      1. +27.3.1 The GeneratorFunction Constructor
        1. 27.3.1.1 GeneratorFunction ( ...parameterArgs,bodyArg )
      2. +27.3.2 Properties of the GeneratorFunction Constructor
        1. 27.3.2.1 GeneratorFunction.prototype
      3. +27.3.3 Properties of the GeneratorFunction Prototype Object
        1. 27.3.3.1 GeneratorFunction.prototype.constructor
        2. 27.3.3.2 GeneratorFunction.prototype.prototype
        3. 27.3.3.3 GeneratorFunction.prototype [ %Symbol.toStringTag% ]
      4. +27.3.4 GeneratorFunction Instances
        1. 27.3.4.1 length
        2. 27.3.4.2 name
        3. 27.3.4.3 prototype
    4. +27.4 AsyncGeneratorFunction Objects
      1. +27.4.1 The AsyncGeneratorFunction Constructor
        1. 27.4.1.1 AsyncGeneratorFunction ( ...parameterArgs,bodyArg )
      2. +27.4.2 Properties of the AsyncGeneratorFunction Constructor
        1. 27.4.2.1 AsyncGeneratorFunction.prototype
      3. +27.4.3 Properties of the AsyncGeneratorFunction Prototype Object
        1. 27.4.3.1 AsyncGeneratorFunction.prototype.constructor
        2. 27.4.3.2 AsyncGeneratorFunction.prototype.prototype
        3. 27.4.3.3 AsyncGeneratorFunction.prototype [ %Symbol.toStringTag% ]
      4. +27.4.4 AsyncGeneratorFunction Instances
        1. 27.4.4.1 length
        2. 27.4.4.2 name
        3. 27.4.4.3 prototype
    5. +27.5 Generator Objects
      1. +27.5.1 The %GeneratorPrototype% Object
        1. 27.5.1.1 %GeneratorPrototype%.constructor
        2. 27.5.1.2 %GeneratorPrototype%.next (value )
        3. 27.5.1.3 %GeneratorPrototype%.return (value )
        4. 27.5.1.4 %GeneratorPrototype%.throw (exception )
        5. 27.5.1.5 %GeneratorPrototype% [ %Symbol.toStringTag% ]
      2. 27.5.2 Properties of Generator Instances
      3. +27.5.3 Generator Abstract Operations
        1. 27.5.3.1 GeneratorStart (generator,generatorBody )
        2. 27.5.3.2 GeneratorValidate (generator,generatorBrand )
        3. 27.5.3.3 GeneratorResume (generator,value,generatorBrand )
        4. 27.5.3.4 GeneratorResumeAbrupt (generator,abruptCompletion,generatorBrand )
        5. 27.5.3.5 GetGeneratorKind ( )
        6. 27.5.3.6 GeneratorYield (iteratorResult )
        7. 27.5.3.7 Yield (value )
        8. 27.5.3.8 CreateIteratorFromClosure (closure,generatorBrand,generatorPrototype [ ,extraSlots ] )
    6. +27.6 AsyncGenerator Objects
      1. +27.6.1 The %AsyncGeneratorPrototype% Object
        1. 27.6.1.1 %AsyncGeneratorPrototype%.constructor
        2. 27.6.1.2 %AsyncGeneratorPrototype%.next (value )
        3. 27.6.1.3 %AsyncGeneratorPrototype%.return (value )
        4. 27.6.1.4 %AsyncGeneratorPrototype%.throw (exception )
        5. 27.6.1.5 %AsyncGeneratorPrototype% [ %Symbol.toStringTag% ]
      2. 27.6.2 Properties of AsyncGenerator Instances
      3. +27.6.3 AsyncGenerator Abstract Operations
        1. 27.6.3.1 AsyncGeneratorRequest Records
        2. 27.6.3.2 AsyncGeneratorStart (generator,generatorBody )
        3. 27.6.3.3 AsyncGeneratorValidate (generator,generatorBrand )
        4. 27.6.3.4 AsyncGeneratorEnqueue (generator,completion,promiseCapability )
        5. 27.6.3.5 AsyncGeneratorCompleteStep (generator,completion,done [ ,realm ] )
        6. 27.6.3.6 AsyncGeneratorResume (generator,completion )
        7. 27.6.3.7 AsyncGeneratorUnwrapYieldResumption (resumptionValue )
        8. 27.6.3.8 AsyncGeneratorYield (value )
        9. 27.6.3.9 AsyncGeneratorAwaitReturn (generator )
        10. 27.6.3.10 AsyncGeneratorDrainQueue (generator )
        11. 27.6.3.11 CreateAsyncIteratorFromClosure (closure,generatorBrand,generatorPrototype )
    7. +27.7 AsyncFunction Objects
      1. +27.7.1 The AsyncFunction Constructor
        1. 27.7.1.1 AsyncFunction ( ...parameterArgs,bodyArg )
      2. +27.7.2 Properties of the AsyncFunction Constructor
        1. 27.7.2.1 AsyncFunction.prototype
      3. +27.7.3 Properties of the AsyncFunction Prototype Object
        1. 27.7.3.1 AsyncFunction.prototype.constructor
        2. 27.7.3.2 AsyncFunction.prototype [ %Symbol.toStringTag% ]
      4. +27.7.4 AsyncFunction Instances
        1. 27.7.4.1 length
        2. 27.7.4.2 name
      5. +27.7.5 Async Functions Abstract Operations
        1. 27.7.5.1 AsyncFunctionStart (promiseCapability,asyncFunctionBody )
        2. 27.7.5.2 AsyncBlockStart (promiseCapability,asyncBody,asyncContext )
        3. 27.7.5.3 Await (value )
  29. +28 Reflection
    1. +28.1 The Reflect Object
      1. 28.1.1 Reflect.apply (target,thisArgument,argumentsList )
      2. 28.1.2 Reflect.construct (target,argumentsList [ ,newTarget ] )
      3. 28.1.3 Reflect.defineProperty (target,propertyKey,attributes )
      4. 28.1.4 Reflect.deleteProperty (target,propertyKey )
      5. 28.1.5 Reflect.get (target,propertyKey [ ,receiver ] )
      6. 28.1.6 Reflect.getOwnPropertyDescriptor (target,propertyKey )
      7. 28.1.7 Reflect.getPrototypeOf (target )
      8. 28.1.8 Reflect.has (target,propertyKey )
      9. 28.1.9 Reflect.isExtensible (target )
      10. 28.1.10 Reflect.ownKeys (target )
      11. 28.1.11 Reflect.preventExtensions (target )
      12. 28.1.12 Reflect.set (target,propertyKey,V [ ,receiver ] )
      13. 28.1.13 Reflect.setPrototypeOf (target,proto )
      14. 28.1.14 Reflect [ %Symbol.toStringTag% ]
    2. +28.2 Proxy Objects
      1. +28.2.1 The Proxy Constructor
        1. 28.2.1.1 Proxy (target,handler )
      2. +28.2.2 Properties of the Proxy Constructor
        1. 28.2.2.1 Proxy.revocable (target,handler )
    3. +28.3 Module Namespace Objects
      1. 28.3.1 %Symbol.toStringTag%
  30. +29 Memory Model
    1. 29.1 Memory Model Fundamentals
    2. 29.2 Agent Events Records
    3. 29.3 Chosen Value Records
    4. 29.4 Candidate Executions
    5. +29.5 Abstract Operations for the Memory Model
      1. 29.5.1 EventSet (execution )
      2. 29.5.2 SharedDataBlockEventSet (execution )
      3. 29.5.3 HostEventSet (execution )
      4. 29.5.4 ComposeWriteEventBytes (execution,byteIndex,Ws )
      5. 29.5.5 ValueOfReadEvent (execution,R )
    6. +29.6 Relations of Candidate Executions
      1. 29.6.1 is-agent-order-before
      2. 29.6.2 reads-bytes-from
      3. 29.6.3 reads-from
      4. 29.6.4 host-synchronizes-with
      5. 29.6.5 synchronizes-with
      6. 29.6.6 happens-before
    7. +29.7 Properties of Valid Executions
      1. 29.7.1 Valid Chosen Reads
      2. 29.7.2 Coherent Reads
      3. 29.7.3 Tear Free Reads
      4. 29.7.4 Sequentially Consistent Atomics
      5. 29.7.5 Valid Executions
    8. 29.8 Races
    9. 29.9 Data Races
    10. 29.10 Data Race Freedom
    11. 29.11 Shared Memory Guidelines
  31. +Annex A(informative) Grammar Summary
    1. A.1 Lexical Grammar
    2. A.2 Expressions
    3. A.3 Statements
    4. A.4 Functions and Classes
    5. A.5 Scripts and Modules
    6. A.6 Number Conversions
    7. A.7 Time Zone Offset String Format
    8. A.8 Regular Expressions
  32. +Annex B(normative) Additional ECMAScript Features for Web Browsers
    1. +B.1 Additional Syntax
      1. B.1.1 HTML-like Comments
      2. +B.1.2 Regular Expressions Patterns
        1. B.1.2.1 SS: Early Errors
        2. B.1.2.2 SS: CountLeftCapturingParensWithin and CountLeftCapturingParensBefore
        3. B.1.2.3 SS: IsCharacterClass
        4. B.1.2.4 SS: CharacterValue
        5. B.1.2.5 RS: CompileSubpattern
        6. B.1.2.6 RS: CompileAssertion
        7. B.1.2.7 RS: CompileAtom
        8. +B.1.2.8 RS: CompileToCharSet
          1. B.1.2.8.1 CharacterRangeOrUnion (rer,A,B )
        9. B.1.2.9 SS: ParsePattern (patternText,u,v )
    2. +B.2 Additional Built-in Properties
      1. +B.2.1 Additional Properties of the Global Object
        1. B.2.1.1 escape (string )
        2. B.2.1.2 unescape (string )
      2. +B.2.2 Additional Properties of the String.prototype Object
        1. B.2.2.1 String.prototype.substr (start,length )
        2. +B.2.2.2 String.prototype.anchor (name )
          1. B.2.2.2.1 CreateHTML (string,tag,attribute,value )
        3. B.2.2.3 String.prototype.big ( )
        4. B.2.2.4 String.prototype.blink ( )
        5. B.2.2.5 String.prototype.bold ( )
        6. B.2.2.6 String.prototype.fixed ( )
        7. B.2.2.7 String.prototype.fontcolor (colour )
        8. B.2.2.8 String.prototype.fontsize (size )
        9. B.2.2.9 String.prototype.italics ( )
        10. B.2.2.10 String.prototype.link (url )
        11. B.2.2.11 String.prototype.small ( )
        12. B.2.2.12 String.prototype.strike ( )
        13. B.2.2.13 String.prototype.sub ( )
        14. B.2.2.14 String.prototype.sup ( )
        15. B.2.2.15 String.prototype.trimLeft ( )
        16. B.2.2.16 String.prototype.trimRight ( )
      3. +B.2.3 Additional Properties of the Date.prototype Object
        1. B.2.3.1 Date.prototype.getYear ( )
        2. B.2.3.2 Date.prototype.setYear (year )
        3. B.2.3.3 Date.prototype.toGMTString ( )
      4. +B.2.4 Additional Properties of the RegExp.prototype Object
        1. B.2.4.1 RegExp.prototype.compile (pattern,flags )
    3. +B.3 Other Additional Features
      1. B.3.1 Labelled Function Declarations
      2. B.3.2 Block-Level Function Declarations Web Legacy Compatibility Semantics
      3. B.3.3 FunctionDeclarations in IfStatement Statement Clauses
      4. B.3.4 VariableStatements in Catch Blocks
      5. B.3.5 Initializers in ForIn Statement Heads
      6. B.3.6 The[[IsHTMLDDA]] Internal Slot
      7. B.3.7 Non-default behaviour in HostMakeJobCallback
      8. B.3.8 Non-default behaviour in HostEnsureCanAddPrivateElement
      9. B.3.9 Runtime Errors for Function Call Assignment Targets
  33. Annex C(informative) The Strict Mode of ECMAScript
  34. +Annex D(informative) Host Layering Points
    1. D.1 Host Hooks
    2. D.2 Host-defined Fields
    3. D.3 Host-defined Objects
    4. D.4 Running Jobs
    5. D.5 Internal Methods of Exotic Objects
    6. D.6 Built-in Objects and Methods
  35. Annex E(informative) Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact
  36. Annex F(informative) Additions and Changes That Introduce Incompatibilities with Prior Editions
  37. Bibliography
  38. Colophon
  39. Copyright & Software License
Menu

8 Syntax-Directed Operations

In addition to those defined in this section, specializedsyntax-directed operations are defined throughout this specification.

8.1 Runtime Semantics: Evaluation

Thesyntax-directed operation Evaluation takes no arguments and returns aCompletion Record.

Note
The definitions for this operation are distributed over the "ECMAScript Language" sections of this specification. Each definition appears after the defining occurrence of the relevant productions.

8.2 Scope Analysis

8.2.1 Static Semantics: BoundNames

Thesyntax-directed operation BoundNames takes no arguments and returns aList of Strings.

Note

"*default*" is used within this specification as a synthetic name for a module's default export when it does not have another name. An entry in the module's[[Environment]] is created with that name and holds the corresponding value, and resolving the export named"default" by callingResolveExport (exportName [ ,resolveSet ] ) for the module will return aResolvedBinding Record whose[[BindingName]] is"*default*", which will then resolve in the module's[[Environment]] to the above-mentioned value. This is done only for ease of specification, so that anonymous default exports can be resolved like any other export. This"*default*" string is never accessible to ECMAScript code or to the module linking algorithm.

It is defined piecewise over the following productions:

BindingIdentifier:Identifier
  1. Return aList whose sole element is theStringValue ofIdentifier.
BindingIdentifier:yield
  1. Return «"yield" ».
BindingIdentifier:await
  1. Return «"await" ».
LexicalDeclaration:LetOrConstBindingList;
  1. Return theBoundNames ofBindingList.
BindingList:BindingList,LexicalBinding
  1. Letnames1 be theBoundNames ofBindingList.
  2. Letnames2 be theBoundNames ofLexicalBinding.
  3. Return thelist-concatenation ofnames1 andnames2.
LexicalBinding:BindingIdentifierInitializeropt
  1. Return theBoundNames ofBindingIdentifier.
LexicalBinding:BindingPatternInitializer
  1. Return theBoundNames ofBindingPattern.
VariableDeclarationList:VariableDeclarationList,VariableDeclaration
  1. Letnames1 be theBoundNames ofVariableDeclarationList.
  2. Letnames2 be theBoundNames ofVariableDeclaration.
  3. Return thelist-concatenation ofnames1 andnames2.
VariableDeclaration:BindingIdentifierInitializeropt
  1. Return theBoundNames ofBindingIdentifier.
VariableDeclaration:BindingPatternInitializer
  1. Return theBoundNames ofBindingPattern.
ObjectBindingPattern:{}
  1. Return a new emptyList.
ObjectBindingPattern:{BindingPropertyList,BindingRestProperty}
  1. Letnames1 be theBoundNames ofBindingPropertyList.
  2. Letnames2 be theBoundNames ofBindingRestProperty.
  3. Return thelist-concatenation ofnames1 andnames2.
ArrayBindingPattern:[Elisionopt]
  1. Return a new emptyList.
ArrayBindingPattern:[ElisionoptBindingRestElement]
  1. Return theBoundNames ofBindingRestElement.
ArrayBindingPattern:[BindingElementList,Elisionopt]
  1. Return theBoundNames ofBindingElementList.
ArrayBindingPattern:[BindingElementList,ElisionoptBindingRestElement]
  1. Letnames1 be theBoundNames ofBindingElementList.
  2. Letnames2 be theBoundNames ofBindingRestElement.
  3. Return thelist-concatenation ofnames1 andnames2.
BindingPropertyList:BindingPropertyList,BindingProperty
  1. Letnames1 be theBoundNames ofBindingPropertyList.
  2. Letnames2 be theBoundNames ofBindingProperty.
  3. Return thelist-concatenation ofnames1 andnames2.
BindingElementList:BindingElementList,BindingElisionElement
  1. Letnames1 be theBoundNames ofBindingElementList.
  2. Letnames2 be theBoundNames ofBindingElisionElement.
  3. Return thelist-concatenation ofnames1 andnames2.
BindingElisionElement:ElisionoptBindingElement
  1. Return theBoundNames ofBindingElement.
BindingProperty:PropertyName:BindingElement
  1. Return theBoundNames ofBindingElement.
SingleNameBinding:BindingIdentifierInitializeropt
  1. Return theBoundNames ofBindingIdentifier.
BindingElement:BindingPatternInitializeropt
  1. Return theBoundNames ofBindingPattern.
ForDeclaration:LetOrConstForBinding
  1. Return theBoundNames ofForBinding.
FunctionDeclaration:functionBindingIdentifier(FormalParameters){FunctionBody}
  1. Return theBoundNames ofBindingIdentifier.
FunctionDeclaration:function(FormalParameters){FunctionBody}
  1. Return «"*default*" ».
FormalParameters:[empty]
  1. Return a new emptyList.
FormalParameters:FormalParameterList,FunctionRestParameter
  1. Letnames1 be theBoundNames ofFormalParameterList.
  2. Letnames2 be theBoundNames ofFunctionRestParameter.
  3. Return thelist-concatenation ofnames1 andnames2.
FormalParameterList:FormalParameterList,FormalParameter
  1. Letnames1 be theBoundNames ofFormalParameterList.
  2. Letnames2 be theBoundNames ofFormalParameter.
  3. Return thelist-concatenation ofnames1 andnames2.
ArrowParameters:CoverParenthesizedExpressionAndArrowParameterList
  1. Letformals be theArrowFormalParameters that iscovered byCoverParenthesizedExpressionAndArrowParameterList.
  2. Return theBoundNames offormals.
GeneratorDeclaration:function*BindingIdentifier(FormalParameters){GeneratorBody}
  1. Return theBoundNames ofBindingIdentifier.
GeneratorDeclaration:function*(FormalParameters){GeneratorBody}
  1. Return «"*default*" ».
AsyncGeneratorDeclaration:asyncfunction*BindingIdentifier(FormalParameters){AsyncGeneratorBody}
  1. Return theBoundNames ofBindingIdentifier.
AsyncGeneratorDeclaration:asyncfunction*(FormalParameters){AsyncGeneratorBody}
  1. Return «"*default*" ».
ClassDeclaration:classBindingIdentifierClassTail
  1. Return theBoundNames ofBindingIdentifier.
ClassDeclaration:classClassTail
  1. Return «"*default*" ».
AsyncFunctionDeclaration:asyncfunctionBindingIdentifier(FormalParameters){AsyncFunctionBody}
  1. Return theBoundNames ofBindingIdentifier.
AsyncFunctionDeclaration:asyncfunction(FormalParameters){AsyncFunctionBody}
  1. Return «"*default*" ».
CoverCallExpressionAndAsyncArrowHead:MemberExpressionArguments
  1. Lethead be theAsyncArrowHead that iscovered byCoverCallExpressionAndAsyncArrowHead.
  2. Return theBoundNames ofhead.
ImportDeclaration:importImportClauseFromClauseWithClauseopt;
  1. Return theBoundNames ofImportClause.
ImportDeclaration:importModuleSpecifierWithClauseopt;
  1. Return a new emptyList.
ImportClause:ImportedDefaultBinding,NameSpaceImport
  1. Letnames1 be theBoundNames ofImportedDefaultBinding.
  2. Letnames2 be theBoundNames ofNameSpaceImport.
  3. Return thelist-concatenation ofnames1 andnames2.
ImportClause:ImportedDefaultBinding,NamedImports
  1. Letnames1 be theBoundNames ofImportedDefaultBinding.
  2. Letnames2 be theBoundNames ofNamedImports.
  3. Return thelist-concatenation ofnames1 andnames2.
NamedImports:{}
  1. Return a new emptyList.
ImportsList:ImportsList,ImportSpecifier
  1. Letnames1 be theBoundNames ofImportsList.
  2. Letnames2 be theBoundNames ofImportSpecifier.
  3. Return thelist-concatenation ofnames1 andnames2.
ImportSpecifier:ModuleExportNameasImportedBinding
  1. Return theBoundNames ofImportedBinding.
ExportDeclaration:exportExportFromClauseFromClauseWithClauseopt;exportNamedExports;
  1. Return a new emptyList.
ExportDeclaration:exportVariableStatement
  1. Return theBoundNames ofVariableStatement.
ExportDeclaration:exportDeclaration
  1. Return theBoundNames ofDeclaration.
ExportDeclaration:exportdefaultHoistableDeclaration
  1. LetdeclarationNames be theBoundNames ofHoistableDeclaration.
  2. IfdeclarationNames does not include the element"*default*", append"*default*" todeclarationNames.
  3. ReturndeclarationNames.
ExportDeclaration:exportdefaultClassDeclaration
  1. LetdeclarationNames be theBoundNames ofClassDeclaration.
  2. IfdeclarationNames does not include the element"*default*", append"*default*" todeclarationNames.
  3. ReturndeclarationNames.
ExportDeclaration:exportdefaultAssignmentExpression;
  1. Return «"*default*" ».

8.2.2 Static Semantics: DeclarationPart

Thesyntax-directed operation DeclarationPart takes no arguments and returns aParse Node. It is defined piecewise over the following productions:

HoistableDeclaration:FunctionDeclaration
  1. ReturnFunctionDeclaration.
HoistableDeclaration:GeneratorDeclaration
  1. ReturnGeneratorDeclaration.
HoistableDeclaration:AsyncFunctionDeclaration
  1. ReturnAsyncFunctionDeclaration.
HoistableDeclaration:AsyncGeneratorDeclaration
  1. ReturnAsyncGeneratorDeclaration.
Declaration:ClassDeclaration
  1. ReturnClassDeclaration.
Declaration:LexicalDeclaration
  1. ReturnLexicalDeclaration.

8.2.3 Static Semantics: IsConstantDeclaration

Thesyntax-directed operation IsConstantDeclaration takes no arguments and returns a Boolean. It is defined piecewise over the following productions:

LexicalDeclaration:LetOrConstBindingList;
  1. ReturnIsConstantDeclaration ofLetOrConst.
LetOrConst:let
  1. Returnfalse.
LetOrConst:const
  1. Returntrue.
FunctionDeclaration:functionBindingIdentifier(FormalParameters){FunctionBody}function(FormalParameters){FunctionBody}GeneratorDeclaration:function*BindingIdentifier(FormalParameters){GeneratorBody}function*(FormalParameters){GeneratorBody}AsyncGeneratorDeclaration:asyncfunction*BindingIdentifier(FormalParameters){AsyncGeneratorBody}asyncfunction*(FormalParameters){AsyncGeneratorBody}AsyncFunctionDeclaration:asyncfunctionBindingIdentifier(FormalParameters){AsyncFunctionBody}asyncfunction(FormalParameters){AsyncFunctionBody}
  1. Returnfalse.
ClassDeclaration:classBindingIdentifierClassTailclassClassTail
  1. Returnfalse.
ExportDeclaration:exportExportFromClauseFromClause;exportNamedExports;exportdefaultAssignmentExpression;
  1. Returnfalse.
Note

It is not necessary to treatexport defaultAssignmentExpression as a constant declaration because there is no syntax that permits assignment to the internal bound name used to reference a module's default object.

8.2.4 Static Semantics: LexicallyDeclaredNames

Thesyntax-directed operation LexicallyDeclaredNames takes no arguments and returns aList of Strings. It is defined piecewise over the following productions:

Block:{}
  1. Return a new emptyList.
StatementList:StatementListStatementListItem
  1. Letnames1 be theLexicallyDeclaredNames ofStatementList.
  2. Letnames2 be theLexicallyDeclaredNames ofStatementListItem.
  3. Return thelist-concatenation ofnames1 andnames2.
StatementListItem:Statement
  1. IfStatement isStatement:LabelledStatement, return theLexicallyDeclaredNames ofLabelledStatement.
  2. Return a new emptyList.
StatementListItem:Declaration
  1. Return theBoundNames ofDeclaration.
CaseBlock:{}
  1. Return a new emptyList.
CaseBlock:{CaseClausesoptDefaultClauseCaseClausesopt}
  1. If the firstCaseClauses is present, letnames1 be theLexicallyDeclaredNames of the firstCaseClauses.
  2. Else, letnames1 be a new emptyList.
  3. Letnames2 be theLexicallyDeclaredNames ofDefaultClause.
  4. If the secondCaseClauses is present, letnames3 be theLexicallyDeclaredNames of the secondCaseClauses.
  5. Else, letnames3 be a new emptyList.
  6. Return thelist-concatenation ofnames1,names2, andnames3.
CaseClauses:CaseClausesCaseClause
  1. Letnames1 be theLexicallyDeclaredNames ofCaseClauses.
  2. Letnames2 be theLexicallyDeclaredNames ofCaseClause.
  3. Return thelist-concatenation ofnames1 andnames2.
CaseClause:caseExpression:StatementListopt
  1. If theStatementList is present, return theLexicallyDeclaredNames ofStatementList.
  2. Return a new emptyList.
DefaultClause:default:StatementListopt
  1. If theStatementList is present, return theLexicallyDeclaredNames ofStatementList.
  2. Return a new emptyList.
LabelledStatement:LabelIdentifier:LabelledItem
  1. Return theLexicallyDeclaredNames ofLabelledItem.
LabelledItem:Statement
  1. Return a new emptyList.
LabelledItem:FunctionDeclaration
  1. Return theBoundNames ofFunctionDeclaration.
FunctionStatementList:[empty]
  1. Return a new emptyList.
FunctionStatementList:StatementList
  1. Return theTopLevelLexicallyDeclaredNames ofStatementList.
ClassStaticBlockStatementList:[empty]
  1. Return a new emptyList.
ClassStaticBlockStatementList:StatementList
  1. Return theTopLevelLexicallyDeclaredNames ofStatementList.
ConciseBody:ExpressionBody
  1. Return a new emptyList.
AsyncConciseBody:ExpressionBody
  1. Return a new emptyList.
Script:[empty]
  1. Return a new emptyList.
ScriptBody:StatementList
  1. Return theTopLevelLexicallyDeclaredNames ofStatementList.
Note 1

At the top level of aScript, function declarations are treated like var declarations rather than like lexical declarations.

Note 2

The LexicallyDeclaredNames of aModule includes the names of all of its imported bindings.

ModuleItemList:ModuleItemListModuleItem
  1. Letnames1 be theLexicallyDeclaredNames ofModuleItemList.
  2. Letnames2 be theLexicallyDeclaredNames ofModuleItem.
  3. Return thelist-concatenation ofnames1 andnames2.
ModuleItem:ImportDeclaration
  1. Return theBoundNames ofImportDeclaration.
ModuleItem:ExportDeclaration
  1. IfExportDeclaration isexportVariableStatement, return a new emptyList.
  2. Return theBoundNames ofExportDeclaration.
ModuleItem:StatementListItem
  1. Return theLexicallyDeclaredNames ofStatementListItem.
Note 3

At the top level of aModule, function declarations are treated like lexical declarations rather than like var declarations.

8.2.5 Static Semantics: LexicallyScopedDeclarations

Thesyntax-directed operation LexicallyScopedDeclarations takes no arguments and returns aList ofParse Nodes. It is defined piecewise over the following productions:

StatementList:StatementListStatementListItem
  1. Letdeclarations1 be theLexicallyScopedDeclarations ofStatementList.
  2. Letdeclarations2 be theLexicallyScopedDeclarations ofStatementListItem.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
StatementListItem:Statement
  1. IfStatement isStatement:LabelledStatement, return theLexicallyScopedDeclarations ofLabelledStatement.
  2. Return a new emptyList.
StatementListItem:Declaration
  1. Return aList whose sole element is theDeclarationPart ofDeclaration.
CaseBlock:{}
  1. Return a new emptyList.
CaseBlock:{CaseClausesoptDefaultClauseCaseClausesopt}
  1. If the firstCaseClauses is present, letdeclarations1 be theLexicallyScopedDeclarations of the firstCaseClauses.
  2. Else, letdeclarations1 be a new emptyList.
  3. Letdeclarations2 be theLexicallyScopedDeclarations ofDefaultClause.
  4. If the secondCaseClauses is present, letdeclarations3 be theLexicallyScopedDeclarations of the secondCaseClauses.
  5. Else, letdeclarations3 be a new emptyList.
  6. Return thelist-concatenation ofdeclarations1,declarations2, anddeclarations3.
CaseClauses:CaseClausesCaseClause
  1. Letdeclarations1 be theLexicallyScopedDeclarations ofCaseClauses.
  2. Letdeclarations2 be theLexicallyScopedDeclarations ofCaseClause.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
CaseClause:caseExpression:StatementListopt
  1. If theStatementList is present, return theLexicallyScopedDeclarations ofStatementList.
  2. Return a new emptyList.
DefaultClause:default:StatementListopt
  1. If theStatementList is present, return theLexicallyScopedDeclarations ofStatementList.
  2. Return a new emptyList.
LabelledStatement:LabelIdentifier:LabelledItem
  1. Return theLexicallyScopedDeclarations ofLabelledItem.
LabelledItem:Statement
  1. Return a new emptyList.
LabelledItem:FunctionDeclaration
  1. Return «FunctionDeclaration ».
FunctionStatementList:[empty]
  1. Return a new emptyList.
FunctionStatementList:StatementList
  1. Return theTopLevelLexicallyScopedDeclarations ofStatementList.
ClassStaticBlockStatementList:[empty]
  1. Return a new emptyList.
ClassStaticBlockStatementList:StatementList
  1. Return theTopLevelLexicallyScopedDeclarations ofStatementList.
ConciseBody:ExpressionBody
  1. Return a new emptyList.
AsyncConciseBody:ExpressionBody
  1. Return a new emptyList.
Script:[empty]
  1. Return a new emptyList.
ScriptBody:StatementList
  1. Return theTopLevelLexicallyScopedDeclarations ofStatementList.
Module:[empty]
  1. Return a new emptyList.
ModuleItemList:ModuleItemListModuleItem
  1. Letdeclarations1 be theLexicallyScopedDeclarations ofModuleItemList.
  2. Letdeclarations2 be theLexicallyScopedDeclarations ofModuleItem.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
ModuleItem:ImportDeclaration
  1. Return a new emptyList.
ExportDeclaration:exportExportFromClauseFromClauseWithClauseopt;exportNamedExports;exportVariableStatement
  1. Return a new emptyList.
ExportDeclaration:exportDeclaration
  1. Return aList whose sole element is theDeclarationPart ofDeclaration.
ExportDeclaration:exportdefaultHoistableDeclaration
  1. Return aList whose sole element is theDeclarationPart ofHoistableDeclaration.
ExportDeclaration:exportdefaultClassDeclaration
  1. Return aList whose sole element isClassDeclaration.
ExportDeclaration:exportdefaultAssignmentExpression;
  1. Return aList whose sole element is thisExportDeclaration.

8.2.6 Static Semantics: VarDeclaredNames

Thesyntax-directed operation VarDeclaredNames takes no arguments and returns aList of Strings. It is defined piecewise over the following productions:

Statement:EmptyStatementExpressionStatementContinueStatementBreakStatementReturnStatementThrowStatementDebuggerStatement
  1. Return a new emptyList.
Block:{}
  1. Return a new emptyList.
StatementList:StatementListStatementListItem
  1. Letnames1 be theVarDeclaredNames ofStatementList.
  2. Letnames2 be theVarDeclaredNames ofStatementListItem.
  3. Return thelist-concatenation ofnames1 andnames2.
StatementListItem:Declaration
  1. Return a new emptyList.
VariableStatement:varVariableDeclarationList;
  1. Return theBoundNames ofVariableDeclarationList.
IfStatement:if(Expression)StatementelseStatement
  1. Letnames1 be theVarDeclaredNames of the firstStatement.
  2. Letnames2 be theVarDeclaredNames of the secondStatement.
  3. Return thelist-concatenation ofnames1 andnames2.
IfStatement:if(Expression)Statement
  1. Return theVarDeclaredNames ofStatement.
DoWhileStatement:doStatementwhile(Expression);
  1. Return theVarDeclaredNames ofStatement.
WhileStatement:while(Expression)Statement
  1. Return theVarDeclaredNames ofStatement.
ForStatement:for(Expressionopt;Expressionopt;Expressionopt)Statement
  1. Return theVarDeclaredNames ofStatement.
ForStatement:for(varVariableDeclarationList;Expressionopt;Expressionopt)Statement
  1. Letnames1 be theBoundNames ofVariableDeclarationList.
  2. Letnames2 be theVarDeclaredNames ofStatement.
  3. Return thelist-concatenation ofnames1 andnames2.
ForStatement:for(LexicalDeclarationExpressionopt;Expressionopt)Statement
  1. Return theVarDeclaredNames ofStatement.
ForInOfStatement:for(LeftHandSideExpressioninExpression)Statementfor(ForDeclarationinExpression)Statementfor(LeftHandSideExpressionofAssignmentExpression)Statementfor(ForDeclarationofAssignmentExpression)Statementforawait(LeftHandSideExpressionofAssignmentExpression)Statementforawait(ForDeclarationofAssignmentExpression)Statement
  1. Return theVarDeclaredNames ofStatement.
ForInOfStatement:for(varForBindinginExpression)Statementfor(varForBindingofAssignmentExpression)Statementforawait(varForBindingofAssignmentExpression)Statement
  1. Letnames1 be theBoundNames ofForBinding.
  2. Letnames2 be theVarDeclaredNames ofStatement.
  3. Return thelist-concatenation ofnames1 andnames2.
Note

This section is extended by AnnexB.3.5.

WithStatement:with(Expression)Statement
  1. Return theVarDeclaredNames ofStatement.
SwitchStatement:switch(Expression)CaseBlock
  1. Return theVarDeclaredNames ofCaseBlock.
CaseBlock:{}
  1. Return a new emptyList.
CaseBlock:{CaseClausesoptDefaultClauseCaseClausesopt}
  1. If the firstCaseClauses is present, letnames1 be theVarDeclaredNames of the firstCaseClauses.
  2. Else, letnames1 be a new emptyList.
  3. Letnames2 be theVarDeclaredNames ofDefaultClause.
  4. If the secondCaseClauses is present, letnames3 be theVarDeclaredNames of the secondCaseClauses.
  5. Else, letnames3 be a new emptyList.
  6. Return thelist-concatenation ofnames1,names2, andnames3.
CaseClauses:CaseClausesCaseClause
  1. Letnames1 be theVarDeclaredNames ofCaseClauses.
  2. Letnames2 be theVarDeclaredNames ofCaseClause.
  3. Return thelist-concatenation ofnames1 andnames2.
CaseClause:caseExpression:StatementListopt
  1. If theStatementList is present, return theVarDeclaredNames ofStatementList.
  2. Return a new emptyList.
DefaultClause:default:StatementListopt
  1. If theStatementList is present, return theVarDeclaredNames ofStatementList.
  2. Return a new emptyList.
LabelledStatement:LabelIdentifier:LabelledItem
  1. Return theVarDeclaredNames ofLabelledItem.
LabelledItem:FunctionDeclaration
  1. Return a new emptyList.
TryStatement:tryBlockCatch
  1. Letnames1 be theVarDeclaredNames ofBlock.
  2. Letnames2 be theVarDeclaredNames ofCatch.
  3. Return thelist-concatenation ofnames1 andnames2.
TryStatement:tryBlockFinally
  1. Letnames1 be theVarDeclaredNames ofBlock.
  2. Letnames2 be theVarDeclaredNames ofFinally.
  3. Return thelist-concatenation ofnames1 andnames2.
TryStatement:tryBlockCatchFinally
  1. Letnames1 be theVarDeclaredNames ofBlock.
  2. Letnames2 be theVarDeclaredNames ofCatch.
  3. Letnames3 be theVarDeclaredNames ofFinally.
  4. Return thelist-concatenation ofnames1,names2, andnames3.
Catch:catch(CatchParameter)Block
  1. Return theVarDeclaredNames ofBlock.
FunctionStatementList:[empty]
  1. Return a new emptyList.
FunctionStatementList:StatementList
  1. Return theTopLevelVarDeclaredNames ofStatementList.
ClassStaticBlockStatementList:[empty]
  1. Return a new emptyList.
ClassStaticBlockStatementList:StatementList
  1. Return theTopLevelVarDeclaredNames ofStatementList.
ConciseBody:ExpressionBody
  1. Return a new emptyList.
AsyncConciseBody:ExpressionBody
  1. Return a new emptyList.
Script:[empty]
  1. Return a new emptyList.
ScriptBody:StatementList
  1. Return theTopLevelVarDeclaredNames ofStatementList.
ModuleItemList:ModuleItemListModuleItem
  1. Letnames1 be theVarDeclaredNames ofModuleItemList.
  2. Letnames2 be theVarDeclaredNames ofModuleItem.
  3. Return thelist-concatenation ofnames1 andnames2.
ModuleItem:ImportDeclaration
  1. Return a new emptyList.
ModuleItem:ExportDeclaration
  1. IfExportDeclaration isexportVariableStatement, return theBoundNames ofExportDeclaration.
  2. Return a new emptyList.

8.2.7 Static Semantics: VarScopedDeclarations

Thesyntax-directed operation VarScopedDeclarations takes no arguments and returns aList ofParse Nodes. It is defined piecewise over the following productions:

Statement:EmptyStatementExpressionStatementContinueStatementBreakStatementReturnStatementThrowStatementDebuggerStatement
  1. Return a new emptyList.
Block:{}
  1. Return a new emptyList.
StatementList:StatementListStatementListItem
  1. Letdeclarations1 be theVarScopedDeclarations ofStatementList.
  2. Letdeclarations2 be theVarScopedDeclarations ofStatementListItem.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
StatementListItem:Declaration
  1. Return a new emptyList.
VariableDeclarationList:VariableDeclaration
  1. Return «VariableDeclaration ».
VariableDeclarationList:VariableDeclarationList,VariableDeclaration
  1. Letdeclarations1 be theVarScopedDeclarations ofVariableDeclarationList.
  2. Return thelist-concatenation ofdeclarations1 and «VariableDeclaration ».
IfStatement:if(Expression)StatementelseStatement
  1. Letdeclarations1 be theVarScopedDeclarations of the firstStatement.
  2. Letdeclarations2 be theVarScopedDeclarations of the secondStatement.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
IfStatement:if(Expression)Statement
  1. Return theVarScopedDeclarations ofStatement.
DoWhileStatement:doStatementwhile(Expression);
  1. Return theVarScopedDeclarations ofStatement.
WhileStatement:while(Expression)Statement
  1. Return theVarScopedDeclarations ofStatement.
ForStatement:for(Expressionopt;Expressionopt;Expressionopt)Statement
  1. Return theVarScopedDeclarations ofStatement.
ForStatement:for(varVariableDeclarationList;Expressionopt;Expressionopt)Statement
  1. Letdeclarations1 be theVarScopedDeclarations ofVariableDeclarationList.
  2. Letdeclarations2 be theVarScopedDeclarations ofStatement.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
ForStatement:for(LexicalDeclarationExpressionopt;Expressionopt)Statement
  1. Return theVarScopedDeclarations ofStatement.
ForInOfStatement:for(LeftHandSideExpressioninExpression)Statementfor(ForDeclarationinExpression)Statementfor(LeftHandSideExpressionofAssignmentExpression)Statementfor(ForDeclarationofAssignmentExpression)Statementforawait(LeftHandSideExpressionofAssignmentExpression)Statementforawait(ForDeclarationofAssignmentExpression)Statement
  1. Return theVarScopedDeclarations ofStatement.
ForInOfStatement:for(varForBindinginExpression)Statementfor(varForBindingofAssignmentExpression)Statementforawait(varForBindingofAssignmentExpression)Statement
  1. Letdeclarations1 be «ForBinding ».
  2. Letdeclarations2 be theVarScopedDeclarations ofStatement.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
Note

This section is extended by AnnexB.3.5.

WithStatement:with(Expression)Statement
  1. Return theVarScopedDeclarations ofStatement.
SwitchStatement:switch(Expression)CaseBlock
  1. Return theVarScopedDeclarations ofCaseBlock.
CaseBlock:{}
  1. Return a new emptyList.
CaseBlock:{CaseClausesoptDefaultClauseCaseClausesopt}
  1. If the firstCaseClauses is present, letdeclarations1 be theVarScopedDeclarations of the firstCaseClauses.
  2. Else, letdeclarations1 be a new emptyList.
  3. Letdeclarations2 be theVarScopedDeclarations ofDefaultClause.
  4. If the secondCaseClauses is present, letdeclarations3 be theVarScopedDeclarations of the secondCaseClauses.
  5. Else, letdeclarations3 be a new emptyList.
  6. Return thelist-concatenation ofdeclarations1,declarations2, anddeclarations3.
CaseClauses:CaseClausesCaseClause
  1. Letdeclarations1 be theVarScopedDeclarations ofCaseClauses.
  2. Letdeclarations2 be theVarScopedDeclarations ofCaseClause.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
CaseClause:caseExpression:StatementListopt
  1. If theStatementList is present, return theVarScopedDeclarations ofStatementList.
  2. Return a new emptyList.
DefaultClause:default:StatementListopt
  1. If theStatementList is present, return theVarScopedDeclarations ofStatementList.
  2. Return a new emptyList.
LabelledStatement:LabelIdentifier:LabelledItem
  1. Return theVarScopedDeclarations ofLabelledItem.
LabelledItem:FunctionDeclaration
  1. Return a new emptyList.
TryStatement:tryBlockCatch
  1. Letdeclarations1 be theVarScopedDeclarations ofBlock.
  2. Letdeclarations2 be theVarScopedDeclarations ofCatch.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
TryStatement:tryBlockFinally
  1. Letdeclarations1 be theVarScopedDeclarations ofBlock.
  2. Letdeclarations2 be theVarScopedDeclarations ofFinally.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
TryStatement:tryBlockCatchFinally
  1. Letdeclarations1 be theVarScopedDeclarations ofBlock.
  2. Letdeclarations2 be theVarScopedDeclarations ofCatch.
  3. Letdeclarations3 be theVarScopedDeclarations ofFinally.
  4. Return thelist-concatenation ofdeclarations1,declarations2, anddeclarations3.
Catch:catch(CatchParameter)Block
  1. Return theVarScopedDeclarations ofBlock.
FunctionStatementList:[empty]
  1. Return a new emptyList.
FunctionStatementList:StatementList
  1. Return theTopLevelVarScopedDeclarations ofStatementList.
ClassStaticBlockStatementList:[empty]
  1. Return a new emptyList.
ClassStaticBlockStatementList:StatementList
  1. Return theTopLevelVarScopedDeclarations ofStatementList.
ConciseBody:ExpressionBody
  1. Return a new emptyList.
AsyncConciseBody:ExpressionBody
  1. Return a new emptyList.
Script:[empty]
  1. Return a new emptyList.
ScriptBody:StatementList
  1. Return theTopLevelVarScopedDeclarations ofStatementList.
Module:[empty]
  1. Return a new emptyList.
ModuleItemList:ModuleItemListModuleItem
  1. Letdeclarations1 be theVarScopedDeclarations ofModuleItemList.
  2. Letdeclarations2 be theVarScopedDeclarations ofModuleItem.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
ModuleItem:ImportDeclaration
  1. Return a new emptyList.
ModuleItem:ExportDeclaration
  1. IfExportDeclaration isexportVariableStatement, return theVarScopedDeclarations ofVariableStatement.
  2. Return a new emptyList.

8.2.8 Static Semantics: TopLevelLexicallyDeclaredNames

Thesyntax-directed operation TopLevelLexicallyDeclaredNames takes no arguments and returns aList of Strings. It is defined piecewise over the following productions:

StatementList:StatementListStatementListItem
  1. Letnames1 be theTopLevelLexicallyDeclaredNames ofStatementList.
  2. Letnames2 be theTopLevelLexicallyDeclaredNames ofStatementListItem.
  3. Return thelist-concatenation ofnames1 andnames2.
StatementListItem:Statement
  1. Return a new emptyList.
StatementListItem:Declaration
  1. IfDeclaration isDeclaration:HoistableDeclaration, then
    1. Return a new emptyList.
  2. Return theBoundNames ofDeclaration.
Note

At the top level of a function, or script, function declarations are treated like var declarations rather than like lexical declarations.

8.2.9 Static Semantics: TopLevelLexicallyScopedDeclarations

Thesyntax-directed operation TopLevelLexicallyScopedDeclarations takes no arguments and returns aList ofParse Nodes. It is defined piecewise over the following productions:

StatementList:StatementListStatementListItem
  1. Letdeclarations1 be theTopLevelLexicallyScopedDeclarations ofStatementList.
  2. Letdeclarations2 be theTopLevelLexicallyScopedDeclarations ofStatementListItem.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
StatementListItem:Statement
  1. Return a new emptyList.
StatementListItem:Declaration
  1. IfDeclaration isDeclaration:HoistableDeclaration, then
    1. Return a new emptyList.
  2. Return «Declaration ».

8.2.10 Static Semantics: TopLevelVarDeclaredNames

Thesyntax-directed operation TopLevelVarDeclaredNames takes no arguments and returns aList of Strings. It is defined piecewise over the following productions:

StatementList:StatementListStatementListItem
  1. Letnames1 be theTopLevelVarDeclaredNames ofStatementList.
  2. Letnames2 be theTopLevelVarDeclaredNames ofStatementListItem.
  3. Return thelist-concatenation ofnames1 andnames2.
StatementListItem:Declaration
  1. IfDeclaration isDeclaration:HoistableDeclaration, then
    1. Return theBoundNames ofHoistableDeclaration.
  2. Return a new emptyList.
StatementListItem:Statement
  1. IfStatement isStatement:LabelledStatement, return theTopLevelVarDeclaredNames ofStatement.
  2. Return theVarDeclaredNames ofStatement.
Note

At the top level of a function or script, inner function declarations are treated like var declarations.

LabelledStatement:LabelIdentifier:LabelledItem
  1. Return theTopLevelVarDeclaredNames ofLabelledItem.
LabelledItem:Statement
  1. IfStatement isStatement:LabelledStatement, return theTopLevelVarDeclaredNames ofStatement.
  2. Return theVarDeclaredNames ofStatement.
LabelledItem:FunctionDeclaration
  1. Return theBoundNames ofFunctionDeclaration.

8.2.11 Static Semantics: TopLevelVarScopedDeclarations

Thesyntax-directed operation TopLevelVarScopedDeclarations takes no arguments and returns aList ofParse Nodes. It is defined piecewise over the following productions:

StatementList:StatementListStatementListItem
  1. Letdeclarations1 be theTopLevelVarScopedDeclarations ofStatementList.
  2. Letdeclarations2 be theTopLevelVarScopedDeclarations ofStatementListItem.
  3. Return thelist-concatenation ofdeclarations1 anddeclarations2.
StatementListItem:Statement
  1. IfStatement isStatement:LabelledStatement, return theTopLevelVarScopedDeclarations ofStatement.
  2. Return theVarScopedDeclarations ofStatement.
StatementListItem:Declaration
  1. IfDeclaration isDeclaration:HoistableDeclaration, then
    1. Letdeclaration be theDeclarationPart ofHoistableDeclaration.
    2. Return «declaration ».
  2. Return a new emptyList.
LabelledStatement:LabelIdentifier:LabelledItem
  1. Return theTopLevelVarScopedDeclarations ofLabelledItem.
LabelledItem:Statement
  1. IfStatement isStatement:LabelledStatement, return theTopLevelVarScopedDeclarations ofStatement.
  2. Return theVarScopedDeclarations ofStatement.
LabelledItem:FunctionDeclaration
  1. Return «FunctionDeclaration ».

8.3 Labels

8.3.1 Static Semantics: ContainsDuplicateLabels

Thesyntax-directed operation ContainsDuplicateLabels takes argumentlabelSet (aList of Strings) and returns a Boolean. It is defined piecewise over the following productions:

Statement:VariableStatementEmptyStatementExpressionStatementContinueStatementBreakStatementReturnStatementThrowStatementDebuggerStatementBlock:{}StatementListItem:Declaration
  1. Returnfalse.
StatementList:StatementListStatementListItem
  1. LethasDuplicates beContainsDuplicateLabels ofStatementList with argumentlabelSet.
  2. IfhasDuplicates istrue, returntrue.
  3. ReturnContainsDuplicateLabels ofStatementListItem with argumentlabelSet.
IfStatement:if(Expression)StatementelseStatement
  1. LethasDuplicate beContainsDuplicateLabels of the firstStatement with argumentlabelSet.
  2. IfhasDuplicate istrue, returntrue.
  3. ReturnContainsDuplicateLabels of the secondStatement with argumentlabelSet.
IfStatement:if(Expression)Statement
  1. ReturnContainsDuplicateLabels ofStatement with argumentlabelSet.
DoWhileStatement:doStatementwhile(Expression);
  1. ReturnContainsDuplicateLabels ofStatement with argumentlabelSet.
WhileStatement:while(Expression)Statement
  1. ReturnContainsDuplicateLabels ofStatement with argumentlabelSet.
ForStatement:for(Expressionopt;Expressionopt;Expressionopt)Statementfor(varVariableDeclarationList;Expressionopt;Expressionopt)Statementfor(LexicalDeclarationExpressionopt;Expressionopt)Statement
  1. ReturnContainsDuplicateLabels ofStatement with argumentlabelSet.
ForInOfStatement:for(LeftHandSideExpressioninExpression)Statementfor(varForBindinginExpression)Statementfor(ForDeclarationinExpression)Statementfor(LeftHandSideExpressionofAssignmentExpression)Statementfor(varForBindingofAssignmentExpression)Statementfor(ForDeclarationofAssignmentExpression)Statementforawait(LeftHandSideExpressionofAssignmentExpression)Statementforawait(varForBindingofAssignmentExpression)Statementforawait(ForDeclarationofAssignmentExpression)Statement
  1. ReturnContainsDuplicateLabels ofStatement with argumentlabelSet.
Note

This section is extended by AnnexB.3.5.

WithStatement:with(Expression)Statement
  1. ReturnContainsDuplicateLabels ofStatement with argumentlabelSet.
SwitchStatement:switch(Expression)CaseBlock
  1. ReturnContainsDuplicateLabels ofCaseBlock with argumentlabelSet.
CaseBlock:{}
  1. Returnfalse.
CaseBlock:{CaseClausesoptDefaultClauseCaseClausesopt}
  1. If the firstCaseClauses is present, then
    1. IfContainsDuplicateLabels of the firstCaseClauses with argumentlabelSet istrue, returntrue.
  2. IfContainsDuplicateLabels ofDefaultClause with argumentlabelSet istrue, returntrue.
  3. If the secondCaseClauses is not present, returnfalse.
  4. ReturnContainsDuplicateLabels of the secondCaseClauses with argumentlabelSet.
CaseClauses:CaseClausesCaseClause
  1. LethasDuplicates beContainsDuplicateLabels ofCaseClauses with argumentlabelSet.
  2. IfhasDuplicates istrue, returntrue.
  3. ReturnContainsDuplicateLabels ofCaseClause with argumentlabelSet.
CaseClause:caseExpression:StatementListopt
  1. If theStatementList is present, returnContainsDuplicateLabels ofStatementList with argumentlabelSet.
  2. Returnfalse.
DefaultClause:default:StatementListopt
  1. If theStatementList is present, returnContainsDuplicateLabels ofStatementList with argumentlabelSet.
  2. Returnfalse.
LabelledStatement:LabelIdentifier:LabelledItem
  1. Letlabel be theStringValue ofLabelIdentifier.
  2. IflabelSet containslabel, returntrue.
  3. LetnewLabelSet be thelist-concatenation oflabelSet and «label ».
  4. ReturnContainsDuplicateLabels ofLabelledItem with argumentnewLabelSet.
LabelledItem:FunctionDeclaration
  1. Returnfalse.
TryStatement:tryBlockCatch
  1. LethasDuplicates beContainsDuplicateLabels ofBlock with argumentlabelSet.
  2. IfhasDuplicates istrue, returntrue.
  3. ReturnContainsDuplicateLabels ofCatch with argumentlabelSet.
TryStatement:tryBlockFinally
  1. LethasDuplicates beContainsDuplicateLabels ofBlock with argumentlabelSet.
  2. IfhasDuplicates istrue, returntrue.
  3. ReturnContainsDuplicateLabels ofFinally with argumentlabelSet.
TryStatement:tryBlockCatchFinally
  1. IfContainsDuplicateLabels ofBlock with argumentlabelSet istrue, returntrue.
  2. IfContainsDuplicateLabels ofCatch with argumentlabelSet istrue, returntrue.
  3. ReturnContainsDuplicateLabels ofFinally with argumentlabelSet.
Catch:catch(CatchParameter)Block
  1. ReturnContainsDuplicateLabels ofBlock with argumentlabelSet.
FunctionStatementList:[empty]
  1. Returnfalse.
ClassStaticBlockStatementList:[empty]
  1. Returnfalse.
ModuleItemList:ModuleItemListModuleItem
  1. LethasDuplicates beContainsDuplicateLabels ofModuleItemList with argumentlabelSet.
  2. IfhasDuplicates istrue, returntrue.
  3. ReturnContainsDuplicateLabels ofModuleItem with argumentlabelSet.
ModuleItem:ImportDeclarationExportDeclaration
  1. Returnfalse.

8.3.2 Static Semantics: ContainsUndefinedBreakTarget

Thesyntax-directed operation ContainsUndefinedBreakTarget takes argumentlabelSet (aList of Strings) and returns a Boolean. It is defined piecewise over the following productions:

Statement:VariableStatementEmptyStatementExpressionStatementContinueStatementReturnStatementThrowStatementDebuggerStatementBlock:{}StatementListItem:Declaration
  1. Returnfalse.
StatementList:StatementListStatementListItem
  1. LethasUndefinedLabels beContainsUndefinedBreakTarget ofStatementList with argumentlabelSet.
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedBreakTarget ofStatementListItem with argumentlabelSet.
IfStatement:if(Expression)StatementelseStatement
  1. LethasUndefinedLabels beContainsUndefinedBreakTarget of the firstStatement with argumentlabelSet.
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedBreakTarget of the secondStatement with argumentlabelSet.
IfStatement:if(Expression)Statement
  1. ReturnContainsUndefinedBreakTarget ofStatement with argumentlabelSet.
DoWhileStatement:doStatementwhile(Expression);
  1. ReturnContainsUndefinedBreakTarget ofStatement with argumentlabelSet.
WhileStatement:while(Expression)Statement
  1. ReturnContainsUndefinedBreakTarget ofStatement with argumentlabelSet.
ForStatement:for(Expressionopt;Expressionopt;Expressionopt)Statementfor(varVariableDeclarationList;Expressionopt;Expressionopt)Statementfor(LexicalDeclarationExpressionopt;Expressionopt)Statement
  1. ReturnContainsUndefinedBreakTarget ofStatement with argumentlabelSet.
ForInOfStatement:for(LeftHandSideExpressioninExpression)Statementfor(varForBindinginExpression)Statementfor(ForDeclarationinExpression)Statementfor(LeftHandSideExpressionofAssignmentExpression)Statementfor(varForBindingofAssignmentExpression)Statementfor(ForDeclarationofAssignmentExpression)Statementforawait(LeftHandSideExpressionofAssignmentExpression)Statementforawait(varForBindingofAssignmentExpression)Statementforawait(ForDeclarationofAssignmentExpression)Statement
  1. ReturnContainsUndefinedBreakTarget ofStatement with argumentlabelSet.
Note

This section is extended by AnnexB.3.5.

BreakStatement:break;
  1. Returnfalse.
BreakStatement:breakLabelIdentifier;
  1. IflabelSet does not contain theStringValue ofLabelIdentifier, returntrue.
  2. Returnfalse.
WithStatement:with(Expression)Statement
  1. ReturnContainsUndefinedBreakTarget ofStatement with argumentlabelSet.
SwitchStatement:switch(Expression)CaseBlock
  1. ReturnContainsUndefinedBreakTarget ofCaseBlock with argumentlabelSet.
CaseBlock:{}
  1. Returnfalse.
CaseBlock:{CaseClausesoptDefaultClauseCaseClausesopt}
  1. If the firstCaseClauses is present, then
    1. IfContainsUndefinedBreakTarget of the firstCaseClauses with argumentlabelSet istrue, returntrue.
  2. IfContainsUndefinedBreakTarget ofDefaultClause with argumentlabelSet istrue, returntrue.
  3. If the secondCaseClauses is not present, returnfalse.
  4. ReturnContainsUndefinedBreakTarget of the secondCaseClauses with argumentlabelSet.
CaseClauses:CaseClausesCaseClause
  1. LethasUndefinedLabels beContainsUndefinedBreakTarget ofCaseClauses with argumentlabelSet.
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedBreakTarget ofCaseClause with argumentlabelSet.
CaseClause:caseExpression:StatementListopt
  1. If theStatementList is present, returnContainsUndefinedBreakTarget ofStatementList with argumentlabelSet.
  2. Returnfalse.
DefaultClause:default:StatementListopt
  1. If theStatementList is present, returnContainsUndefinedBreakTarget ofStatementList with argumentlabelSet.
  2. Returnfalse.
LabelledStatement:LabelIdentifier:LabelledItem
  1. Letlabel be theStringValue ofLabelIdentifier.
  2. LetnewLabelSet be thelist-concatenation oflabelSet and «label ».
  3. ReturnContainsUndefinedBreakTarget ofLabelledItem with argumentnewLabelSet.
LabelledItem:FunctionDeclaration
  1. Returnfalse.
TryStatement:tryBlockCatch
  1. LethasUndefinedLabels beContainsUndefinedBreakTarget ofBlock with argumentlabelSet.
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedBreakTarget ofCatch with argumentlabelSet.
TryStatement:tryBlockFinally
  1. LethasUndefinedLabels beContainsUndefinedBreakTarget ofBlock with argumentlabelSet.
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedBreakTarget ofFinally with argumentlabelSet.
TryStatement:tryBlockCatchFinally
  1. IfContainsUndefinedBreakTarget ofBlock with argumentlabelSet istrue, returntrue.
  2. IfContainsUndefinedBreakTarget ofCatch with argumentlabelSet istrue, returntrue.
  3. ReturnContainsUndefinedBreakTarget ofFinally with argumentlabelSet.
Catch:catch(CatchParameter)Block
  1. ReturnContainsUndefinedBreakTarget ofBlock with argumentlabelSet.
FunctionStatementList:[empty]
  1. Returnfalse.
ClassStaticBlockStatementList:[empty]
  1. Returnfalse.
ModuleItemList:ModuleItemListModuleItem
  1. LethasUndefinedLabels beContainsUndefinedBreakTarget ofModuleItemList with argumentlabelSet.
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedBreakTarget ofModuleItem with argumentlabelSet.
ModuleItem:ImportDeclarationExportDeclaration
  1. Returnfalse.

8.3.3 Static Semantics: ContainsUndefinedContinueTarget

Thesyntax-directed operation ContainsUndefinedContinueTarget takes argumentsiterationSet (aList of Strings) andlabelSet (aList of Strings) and returns a Boolean. It is defined piecewise over the following productions:

Statement:VariableStatementEmptyStatementExpressionStatementBreakStatementReturnStatementThrowStatementDebuggerStatementBlock:{}StatementListItem:Declaration
  1. Returnfalse.
Statement:BlockStatement
  1. ReturnContainsUndefinedContinueTarget ofBlockStatement with argumentsiterationSet and « ».
BreakableStatement:IterationStatement
  1. LetnewIterationSet be thelist-concatenation ofiterationSet andlabelSet.
  2. ReturnContainsUndefinedContinueTarget ofIterationStatement with argumentsnewIterationSet and « ».
StatementList:StatementListStatementListItem
  1. LethasUndefinedLabels beContainsUndefinedContinueTarget ofStatementList with argumentsiterationSet and « ».
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedContinueTarget ofStatementListItem with argumentsiterationSet and « ».
IfStatement:if(Expression)StatementelseStatement
  1. LethasUndefinedLabels beContainsUndefinedContinueTarget of the firstStatement with argumentsiterationSet and « ».
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedContinueTarget of the secondStatement with argumentsiterationSet and « ».
IfStatement:if(Expression)Statement
  1. ReturnContainsUndefinedContinueTarget ofStatement with argumentsiterationSet and « ».
DoWhileStatement:doStatementwhile(Expression);
  1. ReturnContainsUndefinedContinueTarget ofStatement with argumentsiterationSet and « ».
WhileStatement:while(Expression)Statement
  1. ReturnContainsUndefinedContinueTarget ofStatement with argumentsiterationSet and « ».
ForStatement:for(Expressionopt;Expressionopt;Expressionopt)Statementfor(varVariableDeclarationList;Expressionopt;Expressionopt)Statementfor(LexicalDeclarationExpressionopt;Expressionopt)Statement
  1. ReturnContainsUndefinedContinueTarget ofStatement with argumentsiterationSet and « ».
ForInOfStatement:for(LeftHandSideExpressioninExpression)Statementfor(varForBindinginExpression)Statementfor(ForDeclarationinExpression)Statementfor(LeftHandSideExpressionofAssignmentExpression)Statementfor(varForBindingofAssignmentExpression)Statementfor(ForDeclarationofAssignmentExpression)Statementforawait(LeftHandSideExpressionofAssignmentExpression)Statementforawait(varForBindingofAssignmentExpression)Statementforawait(ForDeclarationofAssignmentExpression)Statement
  1. ReturnContainsUndefinedContinueTarget ofStatement with argumentsiterationSet and « ».
Note

This section is extended by AnnexB.3.5.

ContinueStatement:continue;
  1. Returnfalse.
ContinueStatement:continueLabelIdentifier;
  1. IfiterationSet does not contain theStringValue ofLabelIdentifier, returntrue.
  2. Returnfalse.
WithStatement:with(Expression)Statement
  1. ReturnContainsUndefinedContinueTarget ofStatement with argumentsiterationSet and « ».
SwitchStatement:switch(Expression)CaseBlock
  1. ReturnContainsUndefinedContinueTarget ofCaseBlock with argumentsiterationSet and « ».
CaseBlock:{}
  1. Returnfalse.
CaseBlock:{CaseClausesoptDefaultClauseCaseClausesopt}
  1. If the firstCaseClauses is present, then
    1. IfContainsUndefinedContinueTarget of the firstCaseClauses with argumentsiterationSet and « » istrue, returntrue.
  2. IfContainsUndefinedContinueTarget ofDefaultClause with argumentsiterationSet and « » istrue, returntrue.
  3. If the secondCaseClauses is not present, returnfalse.
  4. ReturnContainsUndefinedContinueTarget of the secondCaseClauses with argumentsiterationSet and « ».
CaseClauses:CaseClausesCaseClause
  1. LethasUndefinedLabels beContainsUndefinedContinueTarget ofCaseClauses with argumentsiterationSet and « ».
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedContinueTarget ofCaseClause with argumentsiterationSet and « ».
CaseClause:caseExpression:StatementListopt
  1. If theStatementList is present, returnContainsUndefinedContinueTarget ofStatementList with argumentsiterationSet and « ».
  2. Returnfalse.
DefaultClause:default:StatementListopt
  1. If theStatementList is present, returnContainsUndefinedContinueTarget ofStatementList with argumentsiterationSet and « ».
  2. Returnfalse.
LabelledStatement:LabelIdentifier:LabelledItem
  1. Letlabel be theStringValue ofLabelIdentifier.
  2. LetnewLabelSet be thelist-concatenation oflabelSet and «label ».
  3. ReturnContainsUndefinedContinueTarget ofLabelledItem with argumentsiterationSet andnewLabelSet.
LabelledItem:FunctionDeclaration
  1. Returnfalse.
TryStatement:tryBlockCatch
  1. LethasUndefinedLabels beContainsUndefinedContinueTarget ofBlock with argumentsiterationSet and « ».
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedContinueTarget ofCatch with argumentsiterationSet and « ».
TryStatement:tryBlockFinally
  1. LethasUndefinedLabels beContainsUndefinedContinueTarget ofBlock with argumentsiterationSet and « ».
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedContinueTarget ofFinally with argumentsiterationSet and « ».
TryStatement:tryBlockCatchFinally
  1. IfContainsUndefinedContinueTarget ofBlock with argumentsiterationSet and « » istrue, returntrue.
  2. IfContainsUndefinedContinueTarget ofCatch with argumentsiterationSet and « » istrue, returntrue.
  3. ReturnContainsUndefinedContinueTarget ofFinally with argumentsiterationSet and « ».
Catch:catch(CatchParameter)Block
  1. ReturnContainsUndefinedContinueTarget ofBlock with argumentsiterationSet and « ».
FunctionStatementList:[empty]
  1. Returnfalse.
ClassStaticBlockStatementList:[empty]
  1. Returnfalse.
ModuleItemList:ModuleItemListModuleItem
  1. LethasUndefinedLabels beContainsUndefinedContinueTarget ofModuleItemList with argumentsiterationSet and « ».
  2. IfhasUndefinedLabels istrue, returntrue.
  3. ReturnContainsUndefinedContinueTarget ofModuleItem with argumentsiterationSet and « ».
ModuleItem:ImportDeclarationExportDeclaration
  1. Returnfalse.

8.4 Function Name Inference

8.4.1 Static Semantics: HasName

Thesyntax-directed operation HasName takes no arguments and returns a Boolean. It is defined piecewise over the following productions:

PrimaryExpression:CoverParenthesizedExpressionAndArrowParameterList
  1. Letexpr be theParenthesizedExpression that iscovered byCoverParenthesizedExpressionAndArrowParameterList.
  2. IfIsFunctionDefinition ofexpr isfalse, returnfalse.
  3. ReturnHasName ofexpr.
FunctionExpression:function(FormalParameters){FunctionBody}GeneratorExpression:function*(FormalParameters){GeneratorBody}AsyncGeneratorExpression:asyncfunction*(FormalParameters){AsyncGeneratorBody}AsyncFunctionExpression:asyncfunction(FormalParameters){AsyncFunctionBody}ArrowFunction:ArrowParameters=>ConciseBodyAsyncArrowFunction:asyncAsyncArrowBindingIdentifier=>AsyncConciseBodyCoverCallExpressionAndAsyncArrowHead=>AsyncConciseBodyClassExpression:classClassTail
  1. Returnfalse.
FunctionExpression:functionBindingIdentifier(FormalParameters){FunctionBody}GeneratorExpression:function*BindingIdentifier(FormalParameters){GeneratorBody}AsyncGeneratorExpression:asyncfunction*BindingIdentifier(FormalParameters){AsyncGeneratorBody}AsyncFunctionExpression:asyncfunctionBindingIdentifier(FormalParameters){AsyncFunctionBody}ClassExpression:classBindingIdentifierClassTail
  1. Returntrue.

8.4.2 Static Semantics: IsFunctionDefinition

Thesyntax-directed operation IsFunctionDefinition takes no arguments and returns a Boolean. It is defined piecewise over the following productions:

PrimaryExpression:CoverParenthesizedExpressionAndArrowParameterList
  1. Letexpr be theParenthesizedExpression that iscovered byCoverParenthesizedExpressionAndArrowParameterList.
  2. ReturnIsFunctionDefinition ofexpr.
PrimaryExpression:thisIdentifierReferenceLiteralArrayLiteralObjectLiteralRegularExpressionLiteralTemplateLiteralMemberExpression:MemberExpression[Expression]MemberExpression.IdentifierNameMemberExpressionTemplateLiteralSuperPropertyMetaPropertynewMemberExpressionArgumentsMemberExpression.PrivateIdentifierNewExpression:newNewExpressionLeftHandSideExpression:CallExpressionOptionalExpressionUpdateExpression:LeftHandSideExpression++LeftHandSideExpression--++UnaryExpression--UnaryExpressionUnaryExpression:deleteUnaryExpressionvoidUnaryExpressiontypeofUnaryExpression+UnaryExpression-UnaryExpression~UnaryExpression!UnaryExpressionAwaitExpressionExponentiationExpression:UpdateExpression**ExponentiationExpressionMultiplicativeExpression:MultiplicativeExpressionMultiplicativeOperatorExponentiationExpressionAdditiveExpression:AdditiveExpression+MultiplicativeExpressionAdditiveExpression-MultiplicativeExpressionShiftExpression:ShiftExpression<<AdditiveExpressionShiftExpression>>AdditiveExpressionShiftExpression>>>AdditiveExpressionRelationalExpression:RelationalExpression<ShiftExpressionRelationalExpression>ShiftExpressionRelationalExpression<=ShiftExpressionRelationalExpression>=ShiftExpressionRelationalExpressioninstanceofShiftExpressionRelationalExpressioninShiftExpressionPrivateIdentifierinShiftExpressionEqualityExpression:EqualityExpression==RelationalExpressionEqualityExpression!=RelationalExpressionEqualityExpression===RelationalExpressionEqualityExpression!==RelationalExpressionBitwiseANDExpression:BitwiseANDExpression&EqualityExpressionBitwiseXORExpression:BitwiseXORExpression^BitwiseANDExpressionBitwiseORExpression:BitwiseORExpression|BitwiseXORExpressionLogicalANDExpression:LogicalANDExpression&&BitwiseORExpressionLogicalORExpression:LogicalORExpression||LogicalANDExpressionCoalesceExpression:CoalesceExpressionHead??BitwiseORExpressionConditionalExpression:ShortCircuitExpression?AssignmentExpression:AssignmentExpressionAssignmentExpression:YieldExpressionLeftHandSideExpression=AssignmentExpressionLeftHandSideExpressionAssignmentOperatorAssignmentExpressionLeftHandSideExpression&&=AssignmentExpressionLeftHandSideExpression||=AssignmentExpressionLeftHandSideExpression??=AssignmentExpressionExpression:Expression,AssignmentExpression
  1. Returnfalse.
AssignmentExpression:ArrowFunctionAsyncArrowFunctionFunctionExpression:functionBindingIdentifieropt(FormalParameters){FunctionBody}GeneratorExpression:function*BindingIdentifieropt(FormalParameters){GeneratorBody}AsyncGeneratorExpression:asyncfunction*BindingIdentifieropt(FormalParameters){AsyncGeneratorBody}AsyncFunctionExpression:asyncfunctionBindingIdentifieropt(FormalParameters){AsyncFunctionBody}ClassExpression:classBindingIdentifieroptClassTail
  1. Returntrue.

8.4.3 Static Semantics: IsAnonymousFunctionDefinition (expr )

The abstract operation IsAnonymousFunctionDefinition takes argumentexpr (anAssignmentExpressionParse Node, anInitializerParse Node, or anExpressionParse Node) and returns a Boolean. It determines if its argument is a function definition that does not bind a name. It performs the following steps when called:

  1. IfIsFunctionDefinition ofexpr isfalse, returnfalse.
  2. LethasName beHasName ofexpr.
  3. IfhasName istrue, returnfalse.
  4. Returntrue.

8.4.4 Static Semantics: IsIdentifierRef

Thesyntax-directed operation IsIdentifierRef takes no arguments and returns a Boolean. It is defined piecewise over the following productions:

PrimaryExpression:IdentifierReference
  1. Returntrue.
PrimaryExpression:thisLiteralArrayLiteralObjectLiteralFunctionExpressionClassExpressionGeneratorExpressionAsyncFunctionExpressionAsyncGeneratorExpressionRegularExpressionLiteralTemplateLiteralCoverParenthesizedExpressionAndArrowParameterListMemberExpression:MemberExpression[Expression]MemberExpression.IdentifierNameMemberExpressionTemplateLiteralSuperPropertyMetaPropertynewMemberExpressionArgumentsMemberExpression.PrivateIdentifierNewExpression:newNewExpressionLeftHandSideExpression:CallExpressionOptionalExpression
  1. Returnfalse.

8.4.5 Runtime Semantics: NamedEvaluation

Thesyntax-directed operation NamedEvaluation takes argumentname (aproperty key or aPrivate Name) and returns either anormal completion containing afunction object or anabrupt completion. It is defined piecewise over the following productions:

PrimaryExpression:CoverParenthesizedExpressionAndArrowParameterList
  1. Letexpr be theParenthesizedExpression that iscovered byCoverParenthesizedExpressionAndArrowParameterList.
  2. Return ? NamedEvaluation ofexpr with argumentname.
ParenthesizedExpression:(Expression)
  1. Assert:IsAnonymousFunctionDefinition(Expression) istrue.
  2. Return ? NamedEvaluation ofExpression with argumentname.
FunctionExpression:function(FormalParameters){FunctionBody}
  1. ReturnInstantiateOrdinaryFunctionExpression ofFunctionExpression with argumentname.
GeneratorExpression:function*(FormalParameters){GeneratorBody}
  1. ReturnInstantiateGeneratorFunctionExpression ofGeneratorExpression with argumentname.
AsyncGeneratorExpression:asyncfunction*(FormalParameters){AsyncGeneratorBody}
  1. ReturnInstantiateAsyncGeneratorFunctionExpression ofAsyncGeneratorExpression with argumentname.
AsyncFunctionExpression:asyncfunction(FormalParameters){AsyncFunctionBody}
  1. ReturnInstantiateAsyncFunctionExpression ofAsyncFunctionExpression with argumentname.
ArrowFunction:ArrowParameters=>ConciseBody
  1. ReturnInstantiateArrowFunctionExpression ofArrowFunction with argumentname.
AsyncArrowFunction:asyncAsyncArrowBindingIdentifier=>AsyncConciseBodyCoverCallExpressionAndAsyncArrowHead=>AsyncConciseBody
  1. ReturnInstantiateAsyncArrowFunctionExpression ofAsyncArrowFunction with argumentname.
ClassExpression:classClassTail
  1. LetsourceText be thesource text matched byClassExpression.
  2. Return ? ClassDefinitionEvaluation ofClassTail with argumentsundefined,name, andsourceText.

8.5 Contains

8.5.1 Static Semantics: Contains

Thesyntax-directed operation Contains takes argumentsymbol (a grammar symbol) and returns a Boolean.

Every grammar production alternative in this specification which is not listed below implicitly has the following default definition of Contains:

  1. For each child nodechild of thisParse Node, do
    1. Ifchild is an instance ofsymbol, returntrue.
    2. Ifchild is an instance of a nonterminal, then
      1. Letcontained be the result ofchildContainssymbol.
      2. Ifcontained istrue, returntrue.
  2. Returnfalse.
FunctionDeclaration:functionBindingIdentifier(FormalParameters){FunctionBody}function(FormalParameters){FunctionBody}FunctionExpression:functionBindingIdentifieropt(FormalParameters){FunctionBody}GeneratorDeclaration:function*BindingIdentifier(FormalParameters){GeneratorBody}function*(FormalParameters){GeneratorBody}GeneratorExpression:function*BindingIdentifieropt(FormalParameters){GeneratorBody}AsyncGeneratorDeclaration:asyncfunction*BindingIdentifier(FormalParameters){AsyncGeneratorBody}asyncfunction*(FormalParameters){AsyncGeneratorBody}AsyncGeneratorExpression:asyncfunction*BindingIdentifieropt(FormalParameters){AsyncGeneratorBody}AsyncFunctionDeclaration:asyncfunctionBindingIdentifier(FormalParameters){AsyncFunctionBody}asyncfunction(FormalParameters){AsyncFunctionBody}AsyncFunctionExpression:asyncfunctionBindingIdentifieropt(FormalParameters){AsyncFunctionBody}
  1. Returnfalse.
Note 1

Static semantic rules that depend upon substructure generally do not look into function definitions.

ClassTail:ClassHeritageopt{ClassBody}
  1. Ifsymbol isClassBody, returntrue.
  2. Ifsymbol isClassHeritage, then
    1. IfClassHeritage is present, returntrue; otherwise returnfalse.
  3. IfClassHeritage is present, then
    1. IfClassHeritageContainssymbol istrue, returntrue.
  4. Return the result ofComputedPropertyContains ofClassBody with argumentsymbol.
Note 2

Static semantic rules that depend upon substructure generally do not look into class bodies except forPropertyNames.

ClassStaticBlock:static{ClassStaticBlockBody}
  1. Returnfalse.
Note 3

Static semantic rules that depend upon substructure generally do not look intostatic initialization blocks.

ArrowFunction:ArrowParameters=>ConciseBody
  1. Ifsymbol is not one ofNewTarget,SuperProperty,SuperCall,super, orthis, returnfalse.
  2. IfArrowParametersContainssymbol istrue, returntrue.
  3. ReturnConciseBodyContainssymbol.
ArrowParameters:CoverParenthesizedExpressionAndArrowParameterList
  1. Letformals be theArrowFormalParameters that iscovered byCoverParenthesizedExpressionAndArrowParameterList.
  2. ReturnformalsContainssymbol.
AsyncArrowFunction:asyncAsyncArrowBindingIdentifier=>AsyncConciseBody
  1. Ifsymbol is not one ofNewTarget,SuperProperty,SuperCall,super, orthis, returnfalse.
  2. ReturnAsyncConciseBodyContainssymbol.
AsyncArrowFunction:CoverCallExpressionAndAsyncArrowHead=>AsyncConciseBody
  1. Ifsymbol is not one ofNewTarget,SuperProperty,SuperCall,super, orthis, returnfalse.
  2. Lethead be theAsyncArrowHead that iscovered byCoverCallExpressionAndAsyncArrowHead.
  3. IfheadContainssymbol istrue, returntrue.
  4. ReturnAsyncConciseBodyContainssymbol.
Note 4

Contains is used to detectnew.target,this, andsuper usage within anArrowFunction orAsyncArrowFunction.

PropertyDefinition:MethodDefinition
  1. Ifsymbol isMethodDefinition, returntrue.
  2. Return the result ofComputedPropertyContains ofMethodDefinition with argumentsymbol.
LiteralPropertyName:IdentifierName
  1. Returnfalse.
MemberExpression:MemberExpression.IdentifierName
  1. IfMemberExpressionContainssymbol istrue, returntrue.
  2. Returnfalse.
SuperProperty:super.IdentifierName
  1. Ifsymbol is theReservedWordsuper, returntrue.
  2. Returnfalse.
CallExpression:CallExpression.IdentifierName
  1. IfCallExpressionContainssymbol istrue, returntrue.
  2. Returnfalse.
OptionalChain:?.IdentifierName
  1. Returnfalse.
OptionalChain:OptionalChain.IdentifierName
  1. IfOptionalChainContainssymbol istrue, returntrue.
  2. Returnfalse.

8.5.2 Static Semantics: ComputedPropertyContains

Thesyntax-directed operation ComputedPropertyContains takes argumentsymbol (a grammar symbol) and returns a Boolean. It is defined piecewise over the following productions:

ClassElementName:PrivateIdentifierPropertyName:LiteralPropertyName
  1. Returnfalse.
PropertyName:ComputedPropertyName
  1. Return the result ofComputedPropertyNameContainssymbol.
MethodDefinition:ClassElementName(UniqueFormalParameters){FunctionBody}getClassElementName(){FunctionBody}setClassElementName(PropertySetParameterList){FunctionBody}
  1. Return the result ofComputedPropertyContains ofClassElementName with argumentsymbol.
GeneratorMethod:*ClassElementName(UniqueFormalParameters){GeneratorBody}
  1. Return the result ofComputedPropertyContains ofClassElementName with argumentsymbol.
AsyncGeneratorMethod:async*ClassElementName(UniqueFormalParameters){AsyncGeneratorBody}
  1. Return the result ofComputedPropertyContains ofClassElementName with argumentsymbol.
ClassElementList:ClassElementListClassElement
  1. LetinList beComputedPropertyContains ofClassElementList with argumentsymbol.
  2. IfinList istrue, returntrue.
  3. Return the result ofComputedPropertyContains ofClassElement with argumentsymbol.
ClassElement:ClassStaticBlock
  1. Returnfalse.
ClassElement:;
  1. Returnfalse.
AsyncMethod:asyncClassElementName(UniqueFormalParameters){AsyncFunctionBody}
  1. Return the result ofComputedPropertyContains ofClassElementName with argumentsymbol.
FieldDefinition:ClassElementNameInitializeropt
  1. Return the result ofComputedPropertyContains ofClassElementName with argumentsymbol.

8.6 Miscellaneous

These operations are used in multiple places throughout the specification.

8.6.1 Runtime Semantics: InstantiateFunctionObject

Thesyntax-directed operation InstantiateFunctionObject takes argumentsenv (anEnvironment Record) andprivateEnv (aPrivateEnvironment Record ornull) and returns an ECMAScriptfunction object. It is defined piecewise over the following productions:

FunctionDeclaration:functionBindingIdentifier(FormalParameters){FunctionBody}function(FormalParameters){FunctionBody}
  1. ReturnInstantiateOrdinaryFunctionObject ofFunctionDeclaration with argumentsenv andprivateEnv.
GeneratorDeclaration:function*BindingIdentifier(FormalParameters){GeneratorBody}function*(FormalParameters){GeneratorBody}
  1. ReturnInstantiateGeneratorFunctionObject ofGeneratorDeclaration with argumentsenv andprivateEnv.
AsyncGeneratorDeclaration:asyncfunction*BindingIdentifier(FormalParameters){AsyncGeneratorBody}asyncfunction*(FormalParameters){AsyncGeneratorBody}
  1. ReturnInstantiateAsyncGeneratorFunctionObject ofAsyncGeneratorDeclaration with argumentsenv andprivateEnv.
AsyncFunctionDeclaration:asyncfunctionBindingIdentifier(FormalParameters){AsyncFunctionBody}asyncfunction(FormalParameters){AsyncFunctionBody}
  1. ReturnInstantiateAsyncFunctionObject ofAsyncFunctionDeclaration with argumentsenv andprivateEnv.

8.6.2 Runtime Semantics: BindingInitialization

Thesyntax-directed operation BindingInitialization takes argumentsvalue (anECMAScript language value) andenvironment (anEnvironment Record orundefined) and returns either anormal completion containingunused or anabrupt completion.

Note

undefined is passed forenvironment to indicate that aPutValue operation should be used to assign the initialization value. This is the case forvar statements and formal parameter lists of somenon-strict functions (See10.2.11). In those cases a lexical binding is hoisted and preinitialized prior to evaluation of its initializer.

It is defined piecewise over the following productions:

BindingIdentifier:Identifier
  1. Letname be theStringValue ofIdentifier.
  2. Return ? InitializeBoundName(name,value,environment).
BindingIdentifier:yield
  1. Return ? InitializeBoundName("yield",value,environment).
BindingIdentifier:await
  1. Return ? InitializeBoundName("await",value,environment).
BindingPattern:ObjectBindingPattern
  1. Perform ? RequireObjectCoercible(value).
  2. Return ? BindingInitialization ofObjectBindingPattern with argumentsvalue andenvironment.
BindingPattern:ArrayBindingPattern
  1. LetiteratorRecord be ? GetIterator(value,sync).
  2. Letresult beCompletion(IteratorBindingInitialization ofArrayBindingPattern with argumentsiteratorRecord andenvironment).
  3. IfiteratorRecord.[[Done]] isfalse, return ? IteratorClose(iteratorRecord,result).
  4. Return ? result.
ObjectBindingPattern:{}
  1. Returnunused.
ObjectBindingPattern:{BindingPropertyList}{BindingPropertyList,}
  1. Perform ? PropertyBindingInitialization ofBindingPropertyList with argumentsvalue andenvironment.
  2. Returnunused.
ObjectBindingPattern:{BindingRestProperty}
  1. LetexcludedNames be a new emptyList.
  2. Return ? RestBindingInitialization ofBindingRestProperty with argumentsvalue,environment, andexcludedNames.
ObjectBindingPattern:{BindingPropertyList,BindingRestProperty}
  1. LetexcludedNames be ? PropertyBindingInitialization ofBindingPropertyList with argumentsvalue andenvironment.
  2. Return ? RestBindingInitialization ofBindingRestProperty with argumentsvalue,environment, andexcludedNames.

8.6.2.1 InitializeBoundName (name,value,environment )

The abstract operation InitializeBoundName takes argumentsname (a String),value (anECMAScript language value), andenvironment (anEnvironment Record orundefined) and returns either anormal completion containingunused or anabrupt completion. It performs the following steps when called:

  1. Ifenvironment is notundefined, then
    1. Perform ! environment.InitializeBinding(name,value).
    2. Returnunused.
  2. Else,
    1. Letlhs be ? ResolveBinding(name).
    2. Return ? PutValue(lhs,value).

8.6.3 Runtime Semantics: IteratorBindingInitialization

Thesyntax-directed operation IteratorBindingInitialization takes argumentsiteratorRecord (anIterator Record) andenvironment (anEnvironment Record orundefined) and returns either anormal completion containingunused or anabrupt completion.

Note

Whenundefined is passed forenvironment it indicates that aPutValue operation should be used to assign the initialization value. This is the case for formal parameter lists ofnon-strict functions. In that case the formal parameter bindings are preinitialized in order to deal with the possibility of multiple parameters with the same name.

It is defined piecewise over the following productions:

ArrayBindingPattern:[]
  1. Returnunused.
ArrayBindingPattern:[Elision]
  1. Return ? IteratorDestructuringAssignmentEvaluation ofElision with argumentiteratorRecord.
ArrayBindingPattern:[ElisionoptBindingRestElement]
  1. IfElision is present, then
    1. Perform ? IteratorDestructuringAssignmentEvaluation ofElision with argumentiteratorRecord.
  2. Return ? IteratorBindingInitialization ofBindingRestElement with argumentsiteratorRecord andenvironment.
ArrayBindingPattern:[BindingElementList,Elision]
  1. Perform ? IteratorBindingInitialization ofBindingElementList with argumentsiteratorRecord andenvironment.
  2. Return ? IteratorDestructuringAssignmentEvaluation ofElision with argumentiteratorRecord.
ArrayBindingPattern:[BindingElementList,ElisionoptBindingRestElement]
  1. Perform ? IteratorBindingInitialization ofBindingElementList with argumentsiteratorRecord andenvironment.
  2. IfElision is present, then
    1. Perform ? IteratorDestructuringAssignmentEvaluation ofElision with argumentiteratorRecord.
  3. Return ? IteratorBindingInitialization ofBindingRestElement with argumentsiteratorRecord andenvironment.
BindingElementList:BindingElementList,BindingElisionElement
  1. Perform ? IteratorBindingInitialization ofBindingElementList with argumentsiteratorRecord andenvironment.
  2. Return ? IteratorBindingInitialization ofBindingElisionElement with argumentsiteratorRecord andenvironment.
BindingElisionElement:ElisionBindingElement
  1. Perform ? IteratorDestructuringAssignmentEvaluation ofElision with argumentiteratorRecord.
  2. Return ? IteratorBindingInitialization ofBindingElement with argumentsiteratorRecord andenvironment.
SingleNameBinding:BindingIdentifierInitializeropt
  1. LetbindingId be theStringValue ofBindingIdentifier.
  2. Letlhs be ? ResolveBinding(bindingId,environment).
  3. Letv beundefined.
  4. IfiteratorRecord.[[Done]] isfalse, then
    1. Letnext be ? IteratorStepValue(iteratorRecord).
    2. Ifnext is notdone, then
      1. Setv tonext.
  5. IfInitializer is present andv isundefined, then
    1. IfIsAnonymousFunctionDefinition(Initializer) istrue, then
      1. Setv to ? NamedEvaluation ofInitializer with argumentbindingId.
    2. Else,
      1. LetdefaultValue be ? Evaluation ofInitializer.
      2. Setv to ? GetValue(defaultValue).
  6. Ifenvironment isundefined, return ? PutValue(lhs,v).
  7. Return ? InitializeReferencedBinding(lhs,v).
BindingElement:BindingPatternInitializeropt
  1. Letv beundefined.
  2. IfiteratorRecord.[[Done]] isfalse, then
    1. Letnext be ? IteratorStepValue(iteratorRecord).
    2. Ifnext is notdone, then
      1. Setv tonext.
  3. IfInitializer is present andv isundefined, then
    1. LetdefaultValue be ? Evaluation ofInitializer.
    2. Setv to ? GetValue(defaultValue).
  4. Return ? BindingInitialization ofBindingPattern with argumentsv andenvironment.
BindingRestElement:...BindingIdentifier
  1. Letlhs be ? ResolveBinding(StringValue ofBindingIdentifier,environment).
  2. LetA be ! ArrayCreate(0).
  3. Letn be 0.
  4. Repeat,
    1. Letnext bedone.
    2. IfiteratorRecord.[[Done]] isfalse, then
      1. Setnext to ? IteratorStepValue(iteratorRecord).
    3. Ifnext isdone, then
      1. Ifenvironment isundefined, return ? PutValue(lhs,A).
      2. Return ? InitializeReferencedBinding(lhs,A).
    4. Perform ! CreateDataPropertyOrThrow(A, ! ToString(𝔽(n)),next).
    5. Setn ton + 1.
BindingRestElement:...BindingPattern
  1. LetA be ! ArrayCreate(0).
  2. Letn be 0.
  3. Repeat,
    1. Letnext bedone.
    2. IfiteratorRecord.[[Done]] isfalse, then
      1. Setnext to ? IteratorStepValue(iteratorRecord).
    3. Ifnext isdone, then
      1. Return ? BindingInitialization ofBindingPattern with argumentsA andenvironment.
    4. Perform ! CreateDataPropertyOrThrow(A, ! ToString(𝔽(n)),next).
    5. Setn ton + 1.
FormalParameters:[empty]
  1. Returnunused.
FormalParameters:FormalParameterList,FunctionRestParameter
  1. Perform ? IteratorBindingInitialization ofFormalParameterList with argumentsiteratorRecord andenvironment.
  2. Return ? IteratorBindingInitialization ofFunctionRestParameter with argumentsiteratorRecord andenvironment.
FormalParameterList:FormalParameterList,FormalParameter
  1. Perform ? IteratorBindingInitialization ofFormalParameterList with argumentsiteratorRecord andenvironment.
  2. Return ? IteratorBindingInitialization ofFormalParameter with argumentsiteratorRecord andenvironment.
ArrowParameters:BindingIdentifier
  1. Letv beundefined.
  2. Assert:iteratorRecord.[[Done]] isfalse.
  3. Letnext be ? IteratorStepValue(iteratorRecord).
  4. Ifnext is notdone, then
    1. Setv tonext.
  5. Return ? BindingInitialization ofBindingIdentifier with argumentsv andenvironment.
ArrowParameters:CoverParenthesizedExpressionAndArrowParameterList
  1. Letformals be theArrowFormalParameters that iscovered byCoverParenthesizedExpressionAndArrowParameterList.
  2. Return ? IteratorBindingInitialization offormals with argumentsiteratorRecord andenvironment.
AsyncArrowBindingIdentifier:BindingIdentifier
  1. Letv beundefined.
  2. Assert:iteratorRecord.[[Done]] isfalse.
  3. Letnext be ? IteratorStepValue(iteratorRecord).
  4. Ifnext is notdone, then
    1. Setv tonext.
  5. Return ? BindingInitialization ofBindingIdentifier with argumentsv andenvironment.

8.6.4 Static Semantics: AssignmentTargetType

Thesyntax-directed operation AssignmentTargetType takes no arguments and returnssimple,web-compat, orinvalid. It is defined piecewise over the following productions:

IdentifierReference:Identifier
  1. IfIsStrict(thisIdentifierReference) istrue and theStringValue ofIdentifier is either"eval" or"arguments", returninvalid.
  2. Returnsimple.
IdentifierReference:yieldawaitCallExpression:CallExpression[Expression]CallExpression.IdentifierNameCallExpression.PrivateIdentifierMemberExpression:MemberExpression[Expression]MemberExpression.IdentifierNameSuperPropertyMemberExpression.PrivateIdentifier
  1. Returnsimple.
PrimaryExpression:CoverParenthesizedExpressionAndArrowParameterList
  1. Letexpr be theParenthesizedExpression that iscovered byCoverParenthesizedExpressionAndArrowParameterList.
  2. Return theAssignmentTargetType ofexpr.
CallExpression:CoverCallExpressionAndAsyncArrowHeadCallExpressionArguments
  1. If thehost is a web browser or otherwise supportsRuntime Errors for Function Call Assignment Targets andIsStrict(thisCallExpression) isfalse, then
    1. Returnweb-compat.
  2. Returninvalid.
PrimaryExpression:thisLiteralArrayLiteralObjectLiteralFunctionExpressionClassExpressionGeneratorExpressionAsyncFunctionExpressionAsyncGeneratorExpressionRegularExpressionLiteralTemplateLiteralCallExpression:SuperCallImportCallCallExpressionTemplateLiteralNewExpression:newNewExpressionMemberExpression:MemberExpressionTemplateLiteralnewMemberExpressionArgumentsNewTarget:new.targetImportMeta:import.metaLeftHandSideExpression:OptionalExpressionUpdateExpression:LeftHandSideExpression++LeftHandSideExpression--++UnaryExpression--UnaryExpressionUnaryExpression:deleteUnaryExpressionvoidUnaryExpressiontypeofUnaryExpression+UnaryExpression-UnaryExpression~UnaryExpression!UnaryExpressionAwaitExpressionExponentiationExpression:UpdateExpression**ExponentiationExpressionMultiplicativeExpression:MultiplicativeExpressionMultiplicativeOperatorExponentiationExpressionAdditiveExpression:AdditiveExpression+MultiplicativeExpressionAdditiveExpression-MultiplicativeExpressionShiftExpression:ShiftExpression<<AdditiveExpressionShiftExpression>>AdditiveExpressionShiftExpression>>>AdditiveExpressionRelationalExpression:RelationalExpression<ShiftExpressionRelationalExpression>ShiftExpressionRelationalExpression<=ShiftExpressionRelationalExpression>=ShiftExpressionRelationalExpressioninstanceofShiftExpressionRelationalExpressioninShiftExpressionPrivateIdentifierinShiftExpressionEqualityExpression:EqualityExpression==RelationalExpressionEqualityExpression!=RelationalExpressionEqualityExpression===RelationalExpressionEqualityExpression!==RelationalExpressionBitwiseANDExpression:BitwiseANDExpression&EqualityExpressionBitwiseXORExpression:BitwiseXORExpression^BitwiseANDExpressionBitwiseORExpression:BitwiseORExpression|BitwiseXORExpressionLogicalANDExpression:LogicalANDExpression&&BitwiseORExpressionLogicalORExpression:LogicalORExpression||LogicalANDExpressionCoalesceExpression:CoalesceExpressionHead??BitwiseORExpressionConditionalExpression:ShortCircuitExpression?AssignmentExpression:AssignmentExpressionAssignmentExpression:YieldExpressionArrowFunctionAsyncArrowFunctionLeftHandSideExpression=AssignmentExpressionLeftHandSideExpressionAssignmentOperatorAssignmentExpressionLeftHandSideExpression&&=AssignmentExpressionLeftHandSideExpression||=AssignmentExpressionLeftHandSideExpression??=AssignmentExpressionExpression:Expression,AssignmentExpression
  1. Returninvalid.

8.6.5 Static Semantics: PropName

Thesyntax-directed operation PropName takes no arguments and returns a String orempty. It is defined piecewise over the following productions:

PropertyDefinition:IdentifierReference
  1. Return theStringValue ofIdentifierReference.
PropertyDefinition:...AssignmentExpression
  1. Returnempty.
PropertyDefinition:PropertyName:AssignmentExpression
  1. Return thePropName ofPropertyName.
LiteralPropertyName:IdentifierNameAttributeKey:IdentifierName
  1. Return theStringValue ofIdentifierName.
LiteralPropertyName:StringLiteralAttributeKey:StringLiteral
  1. Return theSV ofStringLiteral.
LiteralPropertyName:NumericLiteral
  1. Letnbr be theNumericValue ofNumericLiteral.
  2. Return ! ToString(nbr).
ComputedPropertyName:[AssignmentExpression]
  1. Returnempty.
MethodDefinition:ClassElementName(UniqueFormalParameters){FunctionBody}getClassElementName(){FunctionBody}setClassElementName(PropertySetParameterList){FunctionBody}
  1. Return thePropName ofClassElementName.
GeneratorMethod:*ClassElementName(UniqueFormalParameters){GeneratorBody}
  1. Return thePropName ofClassElementName.
AsyncGeneratorMethod:async*ClassElementName(UniqueFormalParameters){AsyncGeneratorBody}
  1. Return thePropName ofClassElementName.
ClassElement:ClassStaticBlock
  1. Returnempty.
ClassElement:;
  1. Returnempty.
AsyncMethod:asyncClassElementName(UniqueFormalParameters){AsyncFunctionBody}
  1. Return thePropName ofClassElementName.
FieldDefinition:ClassElementNameInitializeropt
  1. Return thePropName ofClassElementName.
ClassElementName:PrivateIdentifier
  1. Returnempty.

[8]ページ先頭

©2009-2025 Movatter.jp