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 [no LineTerminator 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 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 “[no LineTerminator here]”
            1. 12.10.3.2.1 List of Grammar Productions with Optional Operands and “[no LineTerminator 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 The this 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 The new 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 The super 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 The delete Operator
          1. 13.5.1.1 SS: Early Errors
          2. 13.5.1.2 RS: Evaluation
        2. +13.5.2 The void Operator
          1. 13.5.2.1 RS: Evaluation
        3. +13.5.3 The typeof 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. +