☰
Pins
    Table of Contents
    1. Introduction
    2. 1 Scope
    3. 2 Conformance
    4. 3 Normative References
    5. ◢4 Overview
      1. 4.1 Web Scripting
      2. ◢4.2 ECMAScript Overview
        1. 4.2.1 Objects
        2. 4.2.2 The Strict Variant of ECMAScript
      3. ◢4.3 Terms and Definitions
        1. 4.3.1 type
        2. 4.3.2 primitive value
        3. 4.3.3 object
        4. 4.3.4 constructor
        5. 4.3.5 prototype
        6. 4.3.6 ordinary object
        7. 4.3.7 exotic object
        8. 4.3.8 standard object
        9. 4.3.9 built-in object
        10. 4.3.10 undefined value
        11. 4.3.11 Undefined type
        12. 4.3.12 null value
        13. 4.3.13 Null type
        14. 4.3.14 Boolean value
        15. 4.3.15 Boolean type
        16. 4.3.16 Boolean object
        17. 4.3.17 String value
        18. 4.3.18 String type
        19. 4.3.19 String object
        20. 4.3.20 Number value
        21. 4.3.21 Number type
        22. 4.3.22 Number object
        23. 4.3.23 Infinity
        24. 4.3.24 NaN
        25. 4.3.25 Symbol value
        26. 4.3.26 Symbol type
        27. 4.3.27 Symbol object
        28. 4.3.28 function
        29. 4.3.29 built-in function
        30. 4.3.30 property
        31. 4.3.31 method
        32. 4.3.32 built-in method
        33. 4.3.33 attribute
        34. 4.3.34 own property
        35. 4.3.35 inherited property
      4. 4.4 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
      2. 5.2 Algorithm Conventions
      3. 5.3 Static Semantic Rules
    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
        5. ◢6.1.5 The Symbol Type
          1. 6.1.5.1 Well-Known Symbols
        6. 6.1.6 The Number Type
        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 List and Record Specification Types
        2. 6.2.2 The Set and Relation Specification Types
        3. ◢6.2.3 The Completion Record Specification Type
          1. 6.2.3.1 NormalCompletion
          2. 6.2.3.2 Implicit Completion Values
          3. 6.2.3.3 Throw an Exception
          4. 6.2.3.4 ReturnIfAbrupt
          5. 6.2.3.5 UpdateEmpty ( completionRecord, value )
        4. ◢6.2.4 The Reference Specification Type
          1. 6.2.4.1 GetValue ( V )
          2. 6.2.4.2 PutValue ( V, W )
          3. 6.2.4.3 GetThisValue ( V )
          4. 6.2.4.4 InitializeReferencedBinding ( V, W )
        5. ◢6.2.5 The Property Descriptor Specification Type
          1. 6.2.5.1 IsAccessorDescriptor ( Desc )
          2. 6.2.5.2 IsDataDescriptor ( Desc )
          3. 6.2.5.3 IsGenericDescriptor ( Desc )
          4. 6.2.5.4 FromPropertyDescriptor ( Desc )
          5. 6.2.5.5 ToPropertyDescriptor ( Obj )
          6. 6.2.5.6 CompletePropertyDescriptor ( Desc )
        6. 6.2.6 The Lexical Environment and Environment Record Specification Types
        7. ◢6.2.7 Data Blocks
          1. 6.2.7.1 CreateByteDataBlock ( size )
          2. 6.2.7.2 CreateSharedByteDataBlock( size )
          3. 6.2.7.3 CopyDataBlockBytes ( toBlock, toIndex, fromBlock, fromIndex, count )
    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 ToNumber ( argument )
          1. ◢7.1.3.1 ToNumber Applied to the String Type
            1. 7.1.3.1.1 RS: MV
        4. 7.1.4 ToInteger ( argument )
        5. 7.1.5 ToInt32 ( argument )
        6. 7.1.6 ToUint32 ( argument )
        7. 7.1.7 ToInt16 ( argument )
        8. 7.1.8 ToUint16 ( argument )
        9. 7.1.9 ToInt8 ( argument )
        10. 7.1.10 ToUint8 ( argument )
        11. 7.1.11 ToUint8Clamp ( argument )
        12. ◢7.1.12 ToString ( argument )
          1. 7.1.12.1 ToString Applied to the Number Type
        13. 7.1.13 ToObject ( argument )
        14. 7.1.14 ToPropertyKey ( argument )
        15. 7.1.15 ToLength ( argument )
        16. 7.1.16 CanonicalNumericIndexString ( argument )
        17. 7.1.17 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 IsInteger ( argument )
        7. 7.2.7 IsPropertyKey ( argument )
        8. 7.2.8 IsRegExp ( argument )
        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 Abstract Relational Comparison
        13. 7.2.13 Abstract Equality Comparison
        14. 7.2.14 Strict Equality Comparison
      3. ◢7.3 Operations on Objects
        1. 7.3.1 Get ( O, P )
        2. 7.3.2 GetV ( V, P )
        3. 7.3.3 Set ( O, P, V, Throw )
        4. 7.3.4 CreateDataProperty ( O, P, V )
        5. 7.3.5 CreateMethodProperty ( O, P, V )
        6. 7.3.6 CreateDataPropertyOrThrow ( O, P, V )
        7. 7.3.7 DefinePropertyOrThrow ( O, P, desc )
        8. 7.3.8 DeletePropertyOrThrow ( O, P )
        9. 7.3.9 GetMethod ( V, P )
        10. 7.3.10 HasProperty ( O, P )
        11. 7.3.11 HasOwnProperty ( O, P )
        12. 7.3.12 Call ( F, V [ , argumentsList ] )
        13. 7.3.13 Construct ( F [ , argumentsList [ , newTarget ]] )
        14. 7.3.14 SetIntegrityLevel ( O, level )
        15. 7.3.15 TestIntegrityLevel ( O, level )
        16. 7.3.16 CreateArrayFromList ( elements )
        17. 7.3.17 CreateListFromArrayLike ( obj [ , elementTypes ] )
        18. 7.3.18 Invoke ( V, P [ , argumentsList ] )
        19. 7.3.19 OrdinaryHasInstance ( C, O )
        20. 7.3.20 SpeciesConstructor ( O, defaultConstructor )
        21. 7.3.21 EnumerableOwnProperties ( O, kind )
        22. 7.3.22 GetFunctionRealm ( obj )
      4. ◢7.4 Operations on Iterator Objects
        1. 7.4.1 GetIterator ( obj [ , method ] )
        2. 7.4.2 IteratorNext ( iterator [ , value ] )
        3. 7.4.3 IteratorComplete ( iterResult )
        4. 7.4.4 IteratorValue ( iterResult )
        5. 7.4.5 IteratorStep ( iterator )
        6. 7.4.6 IteratorClose ( iterator, completion )
        7. 7.4.7 CreateIterResultObject ( value, done )
        8. ◢7.4.8 CreateListIterator ( list )
          1. 7.4.8.1 ListIterator next( )
    9. ◢8 Executable Code and Execution Contexts
      1. ◢8.1 Lexical Environments
        1. ◢8.1.1 Environment Records
          1. ◢8.1.1.1 Declarative Environment Records
            1. 8.1.1.1.1 HasBinding ( N )
            2. 8.1.1.1.2 CreateMutableBinding ( N, D )
            3. 8.1.1.1.3 CreateImmutableBinding ( N, S )
            4. 8.1.1.1.4 InitializeBinding ( N, V )
            5. 8.1.1.1.5 SetMutableBinding ( N, V, S )
            6. 8.1.1.1.6 GetBindingValue ( N, S )
            7. 8.1.1.1.7 DeleteBinding ( N )
            8. 8.1.1.1.8 HasThisBinding ( )
            9. 8.1.1.1.9 HasSuperBinding ( )
            10. 8.1.1.1.10 WithBaseObject ( )
          2. ◢8.1.1.2 Object Environment Records
            1. 8.1.1.2.1 HasBinding ( N )
            2. 8.1.1.2.2 CreateMutableBinding ( N, D )
            3. 8.1.1.2.3 CreateImmutableBinding ( N, S )
            4. 8.1.1.2.4 InitializeBinding ( N, V )
            5. 8.1.1.2.5 SetMutableBinding ( N, V, S )
            6. 8.1.1.2.6 GetBindingValue ( N, S )
            7. 8.1.1.2.7 DeleteBinding ( N )
            8. 8.1.1.2.8 HasThisBinding ( )
            9. 8.1.1.2.9 HasSuperBinding ( )
            10. 8.1.1.2.10 WithBaseObject ( )
          3. ◢8.1.1.3 Function Environment Records
            1. 8.1.1.3.1 BindThisValue ( V )
            2. 8.1.1.3.2 HasThisBinding ( )
            3. 8.1.1.3.3 HasSuperBinding ( )
            4. 8.1.1.3.4 GetThisBinding ( )
            5. 8.1.1.3.5 GetSuperBase ( )
          4. ◢8.1.1.4 Global Environment Records
            1. 8.1.1.4.1 HasBinding ( N )
            2. 8.1.1.4.2 CreateMutableBinding ( N, D )
            3. 8.1.1.4.3 CreateImmutableBinding ( N, S )
            4. 8.1.1.4.4 InitializeBinding ( N, V )
            5. 8.1.1.4.5 SetMutableBinding ( N, V, S )
            6. 8.1.1.4.6 GetBindingValue ( N, S )
            7. 8.1.1.4.7 DeleteBinding ( N )
            8. 8.1.1.4.8 HasThisBinding ( )
            9. 8.1.1.4.9 HasSuperBinding ( )
            10. 8.1.1.4.10 WithBaseObject ( )
            11. 8.1.1.4.11 GetThisBinding ( )
            12. 8.1.1.4.12 HasVarDeclaration ( N )
            13. 8.1.1.4.13 HasLexicalDeclaration ( N )
            14. 8.1.1.4.14 HasRestrictedGlobalProperty ( N )
            15. 8.1.1.4.15 CanDeclareGlobalVar ( N )
            16. 8.1.1.4.16 CanDeclareGlobalFunction ( N )
            17. 8.1.1.4.17 CreateGlobalVarBinding ( N, D )
            18. 8.1.1.4.18 CreateGlobalFunctionBinding ( N, V, D )
          5. ◢8.1.1.5 Module Environment Records
            1. 8.1.1.5.1 GetBindingValue ( N, S )
            2. 8.1.1.5.2 DeleteBinding ( N )
            3. 8.1.1.5.3 HasThisBinding ( )
            4. 8.1.1.5.4 GetThisBinding ( )
            5. 8.1.1.5.5 CreateImportBinding ( N, M, N2 )
        2. ◢8.1.2 Lexical Environment Operations
          1. 8.1.2.1 GetIdentifierReference ( lex, name, strict )
          2. 8.1.2.2 NewDeclarativeEnvironment ( E )
          3. 8.1.2.3 NewObjectEnvironment ( O, E )
          4. 8.1.2.4 NewFunctionEnvironment ( F, newTarget )
          5. 8.1.2.5 NewGlobalEnvironment ( G, thisValue )
          6. 8.1.2.6 NewModuleEnvironment ( E )
      2. ◢8.2 Realms
        1. 8.2.1 CreateRealm ( )
        2. 8.2.2 CreateIntrinsics ( realmRec )
        3. 8.2.3 SetRealmGlobalObject ( realmRec, globalObj, thisValue )
        4. 8.2.4 SetDefaultGlobalBindings ( realmRec )
      3. ◢8.3 Execution Contexts
        1. 8.3.1 GetActiveScriptOrModule ( )
        2. 8.3.2 ResolveBinding ( name [ , env ] )
        3. 8.3.3 GetThisEnvironment ( )
        4. 8.3.4 ResolveThisBinding ( )
        5. 8.3.5 GetNewTarget ( )
        6. 8.3.6 GetGlobalObject ( )
      4. ◢8.4 Jobs and Job Queues
        1. 8.4.1 EnqueueJob ( queueName, job, arguments )
      5. 8.5 InitializeHostDefinedRealm ( )
      6. 8.6 RunJobs ( )
      7. ◢8.7 Agents
        1. 8.7.1 AgentSignifier( )
        2. 8.7.2 AgentCanSuspend( )
      8. 8.8 Agent Clusters
      9. 8.9 Forward Progress
    10. ◢9 Ordinary and Exotic Objects Behaviours
      1. ◢9.1 Ordinary Object Internal Methods and Internal Slots
        1. ◢9.1.1 [[GetPrototypeOf]] ( )
          1. 9.1.1.1 OrdinaryGetPrototypeOf ( O )
        2. ◢9.1.2 [[SetPrototypeOf]] ( V )
          1. 9.1.2.1 OrdinarySetPrototypeOf ( O, V )
        3. ◢9.1.3 [[IsExtensible]] ( )
          1. 9.1.3.1 OrdinaryIsExtensible ( O )
        4. ◢9.1.4 [[PreventExtensions]] ( )
          1. 9.1.4.1 OrdinaryPreventExtensions ( O )
        5. ◢9.1.5 [[GetOwnProperty]] ( P )
          1. 9.1.5.1 OrdinaryGetOwnProperty ( O, P )
        6. ◢9.1.6 [[DefineOwnProperty]] ( P, Desc )
          1. 9.1.6.1 OrdinaryDefineOwnProperty ( O, P, Desc )
          2. 9.1.6.2 IsCompatiblePropertyDescriptor ( Extensible, Desc, Current )
          3. 9.1.6.3 ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )
        7. ◢9.1.7 [[HasProperty]]( P )
          1. 9.1.7.1 OrdinaryHasProperty ( O, P )
        8. ◢9.1.8 [[Get]] ( P, Receiver )
          1. 9.1.8.1 OrdinaryGet ( O, P, Receiver )
        9. ◢9.1.9 [[Set]] ( P, V, Receiver )
          1. 9.1.9.1 OrdinarySet ( O, P, V, Receiver )
        10. ◢9.1.10 [[Delete]] ( P )
          1. 9.1.10.1 OrdinaryDelete ( O, P )
        11. ◢9.1.11 [[OwnPropertyKeys]] ( )
          1. 9.1.11.1 OrdinaryOwnPropertyKeys ( O )
        12. 9.1.12 ObjectCreate ( proto [ , internalSlotsList ] )
        13. 9.1.13 OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
        14. 9.1.14 GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
      2. ◢9.2 ECMAScript Function Objects
        1. ◢9.2.1 [[Call]] ( thisArgument, argumentsList )
          1. 9.2.1.1 PrepareForOrdinaryCall ( F, newTarget )
          2. 9.2.1.2 OrdinaryCallBindThis ( F, calleeContext, thisArgument )
          3. 9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
        2. 9.2.2 [[Construct]] ( argumentsList, newTarget )
        3. 9.2.3 FunctionAllocate ( functionPrototype, strict, functionKind )
        4. 9.2.4 FunctionInitialize ( F, kind, ParameterList, Body, Scope )
        5. 9.2.5 FunctionCreate ( kind, ParameterList, Body, Scope, Strict [ , prototype ] )
        6. 9.2.6 GeneratorFunctionCreate ( kind, ParameterList, Body, Scope, Strict )
        7. ◢9.2.7 AddRestrictedFunctionProperties ( F, realm )
          1. 9.2.7.1 %ThrowTypeError% ( )
        8. 9.2.8 MakeConstructor ( F [ , writablePrototype [ , prototype ] ] )
        9. 9.2.9 MakeClassConstructor ( F )
        10. 9.2.10 MakeMethod ( F, homeObject )
        11. 9.2.11 SetFunctionName ( F, name [ , prefix ] )
        12. 9.2.12 FunctionDeclarationInstantiation ( func, argumentsList )
      3. ◢9.3 Built-in Function Objects
        1. 9.3.1 [[Call]] ( thisArgument, argumentsList )
        2. 9.3.2 [[Construct]] ( argumentsList, newTarget )
        3. 9.3.3 CreateBuiltinFunction ( realm, steps, prototype [ , internalSlotsList ] )
      4. ◢9.4 Built-in Exotic Object Internal Methods and Slots
        1. ◢9.4.1 Bound Function Exotic Objects
          1. 9.4.1.1 [[Call]] ( thisArgument, argumentsList )
          2. 9.4.1.2 [[Construct]] ( argumentsList, newTarget )
          3. 9.4.1.3 BoundFunctionCreate ( targetFunction, boundThis, boundArgs )
        2. ◢9.4.2 Array Exotic Objects
          1. 9.4.2.1 [[DefineOwnProperty]] ( P, Desc )
          2. 9.4.2.2 ArrayCreate ( length [ , proto ] )
          3. 9.4.2.3 ArraySpeciesCreate ( originalArray, length )
          4. 9.4.2.4 ArraySetLength ( A, Desc )
        3. ◢9.4.3 String Exotic Objects
          1. 9.4.3.1 [[GetOwnProperty]] ( P )
          2. 9.4.3.2 [[DefineOwnProperty]] ( P, Desc )
          3. 9.4.3.3 [[OwnPropertyKeys]] ( )
          4. 9.4.3.4 StringCreate ( value, prototype )
          5. 9.4.3.5 StringGetOwnProperty ( S, P )
        4. ◢9.4.4 Arguments Exotic Objects
          1. 9.4.4.1 [[GetOwnProperty]] ( P )
          2. 9.4.4.2 [[DefineOwnProperty]] ( P, Desc )
          3. 9.4.4.3 [[Get]] ( P, Receiver )
          4. 9.4.4.4 [[Set]] ( P, V, Receiver )
          5. 9.4.4.5 [[Delete]] ( P )
          6. 9.4.4.6 CreateUnmappedArgumentsObject ( argumentsList )
          7. ◢9.4.4.7 CreateMappedArgumentsObject ( func, formals, argumentsList, env )
            1. 9.4.4.7.1 MakeArgGetter ( name, env )
            2. 9.4.4.7.2 MakeArgSetter ( name, env )
        5. ◢9.4.5 Integer Indexed Exotic Objects
          1. 9.4.5.1 [[GetOwnProperty]] ( P )
          2. 9.4.5.2 [[HasProperty]]( P )
          3. 9.4.5.3 [[DefineOwnProperty]] ( P, Desc )
          4. 9.4.5.4 [[Get]] ( P, Receiver )
          5. 9.4.5.5 [[Set]] ( P, V, Receiver )
          6. 9.4.5.6 [[OwnPropertyKeys]] ( )
          7. 9.4.5.7 IntegerIndexedObjectCreate ( prototype, internalSlotsList )
          8. 9.4.5.8 IntegerIndexedElementGet ( O, index )
          9. 9.4.5.9 IntegerIndexedElementSet ( O, index, value )
        6. ◢9.4.6 Module Namespace Exotic Objects
          1. 9.4.6.1 [[SetPrototypeOf]] ( V )
          2. 9.4.6.2 [[IsExtensible]] ( )
          3. 9.4.6.3 [[PreventExtensions]] ( )
          4. 9.4.6.4 [[GetOwnProperty]] ( P )
          5. 9.4.6.5 [[DefineOwnProperty]] ( P, Desc )
          6. 9.4.6.6 [[HasProperty]] ( P )
          7. 9.4.6.7 [[Get]] ( P, Receiver )
          8. 9.4.6.8 [[Set]] ( P, V, Receiver )
          9. 9.4.6.9 [[Delete]] ( P )
          10. 9.4.6.10 [[OwnPropertyKeys]] ( )
          11. 9.4.6.11 ModuleNamespaceCreate ( module, exports )
        7. ◢9.4.7 Immutable Prototype Exotic Objects
          1. 9.4.7.1 [[SetPrototypeOf]] ( V )
          2. 9.4.7.2 SetImmutablePrototype ( O, V )
      5. ◢9.5 Proxy Object Internal Methods and Internal Slots
        1. 9.5.1 [[GetPrototypeOf]] ( )
        2. 9.5.2 [[SetPrototypeOf]] ( V )
        3. 9.5.3 [[IsExtensible]] ( )
        4. 9.5.4 [[PreventExtensions]] ( )
        5. 9.5.5 [[GetOwnProperty]] ( P )
        6. 9.5.6 [[DefineOwnProperty]] ( P, Desc )
        7. 9.5.7 [[HasProperty]] ( P )
        8. 9.5.8 [[Get]] ( P, Receiver )
        9. 9.5.9 [[Set]] ( P, V, Receiver )
        10. 9.5.10 [[Delete]] ( P )
        11. 9.5.11 [[OwnPropertyKeys]] ( )
        12. 9.5.12 [[Call]] ( thisArgument, argumentsList )
        13. 9.5.13 [[Construct]] ( argumentsList, newTarget )
        14. 9.5.14 ProxyCreate ( target, handler )
    11. ◢10 ECMAScript Language: Source Code
      1. ◢10.1 Source Text
        1. 10.1.1 SS: UTF16Encoding ( cp )
        2. 10.1.2 SS: UTF16Decode( lead, trail )
      2. ◢10.2 Types of Source Code
        1. 10.2.1 Strict Mode Code
        2. 10.2.2 Non-ECMAScript Functions
    12. ◢11 ECMAScript Language: Lexical Grammar
      1. 11.1 Unicode Format-Control Characters
      2. 11.2 White Space
      3. 11.3 Line Terminators
      4. 11.4 Comments
      5. 11.5 Tokens
      6. ◢11.6 Names and Keywords
        1. ◢11.6.1 Identifier Names
          1. 11.6.1.1 SS: Early Errors
          2. 11.6.1.2 SS: StringValue
        2. ◢11.6.2 Reserved Words
          1. 11.6.2.1 Keywords
          2. 11.6.2.2 Future Reserved Words
      7. 11.7 Punctuators
      8. ◢11.8 Literals
        1. 11.8.1 Null Literals
        2. 11.8.2 Boolean Literals
        3. ◢11.8.3 Numeric Literals
          1. 11.8.3.1 SS: MV
        4. ◢11.8.4 String Literals
          1. 11.8.4.1 SS: Early Errors
          2. 11.8.4.2 SS: StringValue
          3. 11.8.4.3 SS: SV
        5. ◢11.8.5 Regular Expression Literals
          1. 11.8.5.1 SS: Early Errors
          2. 11.8.5.2 SS: BodyText
          3. 11.8.5.3 SS: FlagText
        6. ◢11.8.6 Template Literal Lexical Components
          1. 11.8.6.1 SS: TV and TRV
      9. ◢11.9 Automatic Semicolon Insertion
        1. 11.9.1 Rules of Automatic Semicolon Insertion
        2. 11.9.2 Examples of Automatic Semicolon Insertion
    13. ◢12 ECMAScript Language: Expressions
      1. ◢12.1 Identifiers
        1. 12.1.1 SS: Early Errors
        2. 12.1.2 SS: BoundNames
        3. 12.1.3 SS: IsValidSimpleAssignmentTarget
        4. 12.1.4 SS: StringValue
        5. ◢12.1.5 RS: BindingInitialization
          1. 12.1.5.1 RS: InitializeBoundName ( name, value, environment )
        6. 12.1.6 RS: Evaluation
      2. ◢12.2 Primary Expression
        1. ◢12.2.1 Semantics
          1. 12.2.1.1 SS: CoveredParenthesizedExpression
          2. 12.2.1.2 SS: HasName
          3. 12.2.1.3 SS: IsFunctionDefinition
          4. 12.2.1.4 SS: IsIdentifierRef
          5. 12.2.1.5 SS: IsValidSimpleAssignmentTarget
        2. ◢12.2.2 The this Keyword
          1. 12.2.2.1 RS: Evaluation
        3. 12.2.3 Identifier Reference
        4. ◢12.2.4 Literals
          1. 12.2.4.1 RS: Evaluation
        5. ◢12.2.5 Array Initializer
          1. 12.2.5.1 SS: ElisionWidth
          2. 12.2.5.2 RS: ArrayAccumulation
          3. 12.2.5.3 RS: Evaluation
        6. ◢12.2.6 Object Initializer
          1. 12.2.6.1 SS: Early Errors
          2. 12.2.6.2 SS: ComputedPropertyContains
          3. 12.2.6.3 SS: Contains
          4. 12.2.6.4 SS: IsComputedPropertyKey
          5. 12.2.6.5 SS: PropName
          6. 12.2.6.6 SS: PropertyNameList
          7. 12.2.6.7 RS: Evaluation
          8. 12.2.6.8 RS: PropertyDefinitionEvaluation
        7. 12.2.7 Function Defining Expressions
        8. ◢12.2.8 Regular Expression Literals
          1. 12.2.8.1 SS: Early Errors
          2. 12.2.8.2 RS: Evaluation
        9. ◢12.2.9 Template Literals
          1. 12.2.9.1 SS: TemplateStrings
          2. 12.2.9.2 RS: ArgumentListEvaluation
          3. 12.2.9.3 RS: GetTemplateObject ( templateLiteral )
          4. 12.2.9.4 RS: SubstitutionEvaluation
          5. 12.2.9.5 RS: Evaluation
        10. ◢12.2.10 The Grouping Operator
          1. 12.2.10.1 SS: Early Errors
          2. 12.2.10.2 SS: IsFunctionDefinition
          3. 12.2.10.3 SS: IsValidSimpleAssignmentTarget
          4. 12.2.10.4 RS: Evaluation
      3. ◢12.3 Left-Hand-Side Expressions
        1. ◢12.3.1 Static Semantics
          1. 12.3.1.1 SS: CoveredCallExpression
          2. 12.3.1.2 SS: Contains
          3. 12.3.1.3 SS: IsFunctionDefinition
          4. 12.3.1.4 SS: IsDestructuring
          5. 12.3.1.5 SS: IsIdentifierRef
          6. 12.3.1.6 SS: IsValidSimpleAssignmentTarget
        2. ◢12.3.2 Property Accessors
          1. 12.3.2.1 RS: Evaluation
        3. ◢12.3.3 The new Operator
          1. ◢12.3.3.1 RS: Evaluation
            1. 12.3.3.1.1 RS: EvaluateNew ( constructExpr, arguments )
        4. ◢12.3.4 Function Calls
          1. 12.3.4.1 RS: Evaluation
          2. 12.3.4.2 RS: EvaluateCall( ref, arguments, tailPosition )
          3. 12.3.4.3 RS: EvaluateDirectCall( func, thisValue, arguments, tailPosition )
        5. ◢12.3.5 The super Keyword
          1. 12.3.5.1 RS: Evaluation
          2. 12.3.5.2 RS: GetSuperConstructor ( )
          3. 12.3.5.3 RS: MakeSuperPropertyReference ( propertyKey, strict )
        6. ◢12.3.6 Argument Lists
          1. 12.3.6.1 RS: ArgumentListEvaluation
        7. ◢12.3.7 Tagged Templates
          1. 12.3.7.1 RS: Evaluation
        8. ◢12.3.8 Meta Properties
          1. 12.3.8.1 RS: Evaluation
      4. ◢12.4 Update Expressions
        1. 12.4.1 SS: Early Errors
        2. 12.4.2 SS: IsFunctionDefinition
        3. 12.4.3 SS: IsValidSimpleAssignmentTarget
        4. ◢12.4.4 Postfix Increment Operator
          1. 12.4.4.1 RS: Evaluation
        5. ◢12.4.5 Postfix Decrement Operator
          1. 12.4.5.1 RS: Evaluation
        6. ◢12.4.6 Prefix Increment Operator
          1. 12.4.6.1 RS: Evaluation
        7. ◢12.4.7 Prefix Decrement Operator
          1. 12.4.7.1 RS: Evaluation
      5. ◢12.5 Unary Operators
        1. 12.5.1 SS: IsFunctionDefinition
        2. 12.5.2 SS: IsValidSimpleAssignmentTarget
        3. ◢12.5.3 The delete Operator
          1. 12.5.3.1 SS: Early Errors
          2. 12.5.3.2 RS: Evaluation
        4. ◢12.5.4 The void Operator
          1. 12.5.4.1 RS: Evaluation
        5. ◢12.5.5 The typeof Operator
          1. 12.5.5.1 RS: Evaluation
        6. ◢12.5.6 Unary + Operator
          1. 12.5.6.1 RS: Evaluation
        7. ◢12.5.7 Unary - Operator
          1. 12.5.7.1 RS: Evaluation
        8. ◢12.5.8 Bitwise NOT Operator ( ~ )
          1. 12.5.8.1 RS: Evaluation
        9. ◢12.5.9 Logical NOT Operator ( ! )
          1. 12.5.9.1 RS: Evaluation
      6. ◢12.6 Exponentiation Operator
        1. 12.6.1 SS: IsFunctionDefinition
        2. 12.6.2 SS: IsValidSimpleAssignmentTarget
        3. 12.6.3 RS: Evaluation
        4. 12.6.4 Applying the ** Operator
      7. ◢12.7 Multiplicative Operators
        1. 12.7.1 SS: IsFunctionDefinition
        2. 12.7.2 SS: IsValidSimpleAssignmentTarget
        3. ◢12.7.3 RS: Evaluation
          1. 12.7.3.1 Applying the * Operator
          2. 12.7.3.2 Applying the / Operator
          3. 12.7.3.3 Applying the % Operator
      8. ◢12.8 Additive Operators
        1. 12.8.1 SS: IsFunctionDefinition
        2. 12.8.2 SS: IsValidSimpleAssignmentTarget
        3. ◢12.8.3 The Addition Operator ( + )
          1. 12.8.3.1 RS: Evaluation
        4. ◢12.8.4 The Subtraction Operator ( - )
          1. 12.8.4.1 RS: Evaluation
        5. 12.8.5 Applying the Additive Operators to Numbers
      9. ◢12.9 Bitwise Shift Operators
        1. 12.9.1 SS: IsFunctionDefinition
        2. 12.9.2 SS: IsValidSimpleAssignmentTarget
        3. ◢12.9.3 The Left Shift Operator ( << )
          1. 12.9.3.1 RS: Evaluation
        4. ◢12.9.4 The Signed Right Shift Operator ( >> )
          1. 12.9.4.1 RS: Evaluation
        5. ◢12.9.5 The Unsigned Right Shift Operator ( >>> )
          1. 12.9.5.1 RS: Evaluation
      10. ◢12.10 Relational Operators
        1. 12.10.1 SS: IsFunctionDefinition
        2. 12.10.2 SS: IsValidSimpleAssignmentTarget
        3. 12.10.3 RS: Evaluation
        4. 12.10.4 RS: InstanceofOperator ( O, C )
      11. ◢12.11 Equality Operators
        1. 12.11.1 SS: IsFunctionDefinition
        2. 12.11.2 SS: IsValidSimpleAssignmentTarget
        3. 12.11.3 RS: Evaluation
      12. ◢12.12 Binary Bitwise Operators
        1. 12.12.1 SS: IsFunctionDefinition
        2. 12.12.2 SS: IsValidSimpleAssignmentTarget
        3. 12.12.3<