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

21 Numbers and Dates

21.1 Number Objects

21.1.1 The Number Constructor

The Numberconstructor:

  • is%Number%.
  • is the initial value of the"Number" property of theglobal object.
  • creates and initializes a new Number object when called as aconstructor.
  • performs a type conversion when called as a function rather than as aconstructor.
  • may be used as the value of anextends clause of a class definition. Subclassconstructors that intend to inherit the specified Number behaviour must include asuper call to the Numberconstructor to create and initialize the subclass instance with a[[NumberData]] internal slot.

21.1.1.1 Number (value )

This function performs the following steps when called:

  1. Ifvalue is present, then
    1. Letprim be ? ToNumeric(value).
    2. Ifprimis a BigInt, letn be𝔽((prim)).
    3. Otherwise, letn beprim.
  2. Else,
    1. Letn be+0𝔽.
  3. If NewTarget isundefined, returnn.
  4. LetO be ? OrdinaryCreateFromConstructor(NewTarget,"%Number.prototype%", «[[NumberData]] »).
  5. SetO.[[NumberData]] ton.
  6. ReturnO.

21.1.2 Properties of the Number Constructor

The Numberconstructor:

21.1.2.1 Number.EPSILON

The value ofNumber.EPSILON is theNumber value for the magnitude of the difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 × 10-16.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.2.2 Number.isFinite (number )

This function performs the following steps when called:

  1. Ifnumberis not a Number, returnfalse.
  2. Ifnumber is notfinite, returnfalse.
  3. Otherwise, returntrue.

21.1.2.3 Number.isInteger (number )

This function performs the following steps when called:

  1. Ifnumber is anintegral Number, returntrue.
  2. Returnfalse.

21.1.2.4 Number.isNaN (number )

This function performs the following steps when called:

  1. Ifnumberis not a Number, returnfalse.
  2. Ifnumber isNaN, returntrue.
  3. Otherwise, returnfalse.
Note

This function differs from the global isNaN function (19.2.3) in that it does not convert its argument to a Number before determining whether it isNaN.

21.1.2.5 Number.isSafeInteger (number )

Note

Anintegern is a "safe integer" if and only if theNumber value forn is not theNumber value for any otherinteger.

This function performs the following steps when called:

  1. Ifnumber is anintegral Number, then
    1. Ifabs((number)) ≤ 253 - 1, returntrue.
  2. Returnfalse.

21.1.2.6 Number.MAX_SAFE_INTEGER

Note

Due to rounding behaviour necessitated by precision limitations ofIEEE 754-2019, theNumber value for everyinteger greater thanNumber.MAX_SAFE_INTEGER is shared with at least one otherinteger. Such large-magnitudeintegers are therefore notsafe, and are not guaranteed to be exactly representable as Number values or even to be distinguishable from each other. For example, both9007199254740992 and9007199254740993 evaluate to the Number value9007199254740992𝔽.

The value ofNumber.MAX_SAFE_INTEGER is9007199254740991𝔽 (𝔽(253 - 1)).

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.2.7 Number.MAX_VALUE

The value ofNumber.MAX_VALUE is the largest positivefinite value of theNumber type, which is approximately1.7976931348623157 × 10308.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.2.8 Number.MIN_SAFE_INTEGER

Note

Due to rounding behaviour necessitated by precision limitations ofIEEE 754-2019, theNumber value for everyinteger less thanNumber.MIN_SAFE_INTEGER is shared with at least one otherinteger. Such large-magnitudeintegers are therefore notsafe, and are not guaranteed to be exactly representable as Number values or even to be distinguishable from each other. For example, both-9007199254740992 and-9007199254740993 evaluate to the Number value-9007199254740992𝔽.

The value ofNumber.MIN_SAFE_INTEGER is-9007199254740991𝔽 (𝔽(-(253 - 1))).

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.2.9 Number.MIN_VALUE

The value ofNumber.MIN_VALUE is the smallest positive value of theNumber type, which is approximately5 × 10-324.

In theIEEE 754-2019 double precision binary representation, the smallest possible value is a denormalized number. If an implementation does not support denormalized values, the value ofNumber.MIN_VALUE must be the smallest non-zero positive value that can actually be represented by the implementation.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.2.10 Number.NaN

The value ofNumber.NaN isNaN.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.2.11 Number.NEGATIVE_INFINITY

The value ofNumber.NEGATIVE_INFINITY is-∞𝔽.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.2.12 Number.parseFloat (string )

The initial value of the"parseFloat" property is%parseFloat%.

21.1.2.13 Number.parseInt (string,radix )

The initial value of the"parseInt" property is%parseInt%.

21.1.2.14 Number.POSITIVE_INFINITY

The value ofNumber.POSITIVE_INFINITY is+∞𝔽.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.2.15 Number.prototype

The initial value ofNumber.prototype is theNumber prototype object.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.1.3 Properties of the Number Prototype Object

TheNumber prototype object:

  • is%Number.prototype%.
  • is anordinary object.
  • is itself a Number object; it has a[[NumberData]] internal slot with the value+0𝔽.
  • has a[[Prototype]] internal slot whose value is%Object.prototype%.

Unless explicitly stated otherwise, the methods of the Number prototype object defined below are not generic and thethis value passed to them must be either a Number value or an object that has a[[NumberData]] internal slot that has been initialized to a Number value.

The phrase “this Number value” within the specification of a method refers to the result returned by calling the abstract operationThisNumberValue with thethis value of the method invocation passed as the argument.

21.1.3.1 Number.prototype.constructor

The initial value ofNumber.prototype.constructor is%Number%.

21.1.3.2 Number.prototype.toExponential (fractionDigits )

This method returns a String containing this Number value represented in decimal exponential notation with one digit before the significand's decimal point andfractionDigits digits after the significand's decimal point. IffractionDigits isundefined, it includes as many significand digits as necessary to uniquely specify the Number (just like inToString except that in this case the Number is always output in exponential notation).

It performs the following steps when called:

  1. Letx be ? ThisNumberValue(this value).
  2. Letf be ? ToIntegerOrInfinity(fractionDigits).
  3. Assert: IffractionDigits isundefined, thenf is 0.
  4. Ifx is notfinite, returnNumber::toString(x, 10).
  5. Iff < 0 orf > 100, throw aRangeError exception.
  6. Setx to(x).
  7. Lets be the empty String.
  8. Ifx < 0, then
    1. Sets to"-".
    2. Setx to -x.
  9. Ifx = 0, then
    1. Letm be the String value consisting off + 1 occurrences of the code unit 0x0030 (DIGIT ZERO).
    2. Lete be 0.
  10. Else,
    1. IffractionDigits is notundefined, then
      1. Lete andn beintegers such that 10fn < 10f + 1 and for whichn × 10e -f -x is as close to zero as possible. If there are two such sets ofe andn, pick thee andn for whichn × 10e -f is larger.
    2. Else,
      1. Lete,n, andff beintegers such thatff ≥ 0, 10ffn < 10ff + 1,𝔽(n × 10e -ff) is𝔽(x), andff is as small as possible. Note that the decimal representation ofn hasff + 1 digits,n is not divisible by 10, and the least significant digit ofn is not necessarily uniquely determined by these criteria.
      2. Setf toff.
    3. Letm be the String value consisting of the digits of the decimal representation ofn (in order, with no leading zeroes).
  11. Iff ≠ 0, then
    1. Leta be the first code unit ofm.
    2. Letb be the otherf code units ofm.
    3. Setm to thestring-concatenation ofa,".", andb.
  12. Ife = 0, then
    1. Letc be"+".
    2. Letd be"0".
  13. Else,
    1. Ife > 0, then
      1. Letc be"+".
    2. Else,
      1. Assert:e < 0.
      2. Letc be"-".
      3. Sete to -e.
    3. Letd be the String value consisting of the digits of the decimal representation ofe (in order, with no leading zeroes).
  14. Setm to thestring-concatenation ofm,"e",c, andd.
  15. Return thestring-concatenation ofs andm.
Note

For implementations that provide more accurate conversions than required by the rules above, it is recommended that the following alternative version of step10.b.i be used as a guideline:

  1. Lete,n, andff beintegers such thatff ≥ 0, 10ffn < 10ff + 1,𝔽(n × 10e -ff) is𝔽(x), andff is as small as possible. If there are multiple possibilities forn, choose the value ofn for which𝔽(n × 10e -ff) is closest in value to𝔽(x). If there are two such possible values ofn, choose the one that is even.

21.1.3.3 Number.prototype.toFixed (fractionDigits )

Note 1

This method returns a String containing this Number value represented in decimal fixed-point notation withfractionDigits digits after the decimal point. IffractionDigits isundefined, 0 is assumed.

It performs the following steps when called:

  1. Letx be ? ThisNumberValue(this value).
  2. Letf be ? ToIntegerOrInfinity(fractionDigits).
  3. Assert: IffractionDigits isundefined, thenf is 0.
  4. Iff is notfinite, throw aRangeError exception.
  5. Iff < 0 orf > 100, throw aRangeError exception.
  6. Ifx is notfinite, returnNumber::toString(x, 10).
  7. Setx to(x).
  8. Lets be the empty String.
  9. Ifx < 0, then
    1. Sets to"-".
    2. Setx to -x.
  10. Ifx ≥ 1021, then
    1. Letm be ! ToString(𝔽(x)).
  11. Else,
    1. Letn be aninteger for whichn / 10f -x is as close to zero as possible. If there are two suchn, pick the largern.
    2. Ifn = 0, letm be"0"; otherwise letm be the String value consisting of the digits of the decimal representation ofn (in order, with no leading zeroes).
    3. Iff ≠ 0, then
      1. Letk be the length ofm.
      2. Ifkf, then
        1. Letz be the String value consisting off + 1 -k occurrences of the code unit 0x0030 (DIGIT ZERO).
        2. Setm to thestring-concatenation ofz andm.
        3. Setk tof + 1.
      3. Leta be the firstk -f code units ofm.
      4. Letb be the otherf code units ofm.
      5. Setm to thestring-concatenation ofa,".", andb.
  12. Return thestring-concatenation ofs andm.
Note 2

The output oftoFixed may be more precise thantoString for some values because toString only prints enough significant digits to distinguish the number from adjacent Number values. For example,

(1000000000000000128).toString() returns"1000000000000000100", while
(1000000000000000128).toFixed(0) returns"1000000000000000128".

21.1.3.4 Number.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )

An ECMAScript implementation that includes the ECMA-402 Internationalization API must implement this method as specified in the ECMA-402 specification. If an ECMAScript implementation does not include the ECMA-402 API the following specification of this method is used:

This method produces a String value that represents this Number value formatted according to the conventions of thehost environment's current locale. This method isimplementation-defined, and it is permissible, but not encouraged, for it to return the same thing astoString.

The meanings of the optional parameters to this method are defined in the ECMA-402 specification; implementations that do not include ECMA-402 support must not use those parameter positions for anything else.

21.1.3.5 Number.prototype.toPrecision (precision )

This method returns a String containing this Number value represented either in decimal exponential notation with one digit before the significand's decimal point andprecision - 1 digits after the significand's decimal point or in decimal fixed notation withprecision significant digits. Ifprecision isundefined, it callsToString instead.

It performs the following steps when called:

  1. Letx be ? ThisNumberValue(this value).
  2. Ifprecision isundefined, return ! ToString(x).
  3. Letp be ? ToIntegerOrInfinity(precision).
  4. Ifx is notfinite, returnNumber::toString(x, 10).
  5. Ifp < 1 orp > 100, throw aRangeError exception.
  6. Setx to(x).
  7. Lets be the empty String.
  8. Ifx < 0, then
    1. Sets to the code unit 0x002D (HYPHEN-MINUS).
    2. Setx to -x.
  9. Ifx = 0, then
    1. Letm be the String value consisting ofp occurrences of the code unit 0x0030 (DIGIT ZERO).
    2. Lete be 0.
  10. Else,
    1. Lete andn beintegers such that 10p - 1n < 10p and for whichn × 10e -p + 1 -x is as close to zero as possible. If there are two such sets ofe andn, pick thee andn for whichn × 10e -p + 1 is larger.
    2. Letm be the String value consisting of the digits of the decimal representation ofn (in order, with no leading zeroes).
    3. Ife < -6 orep, then
      1. Assert:e ≠ 0.
      2. Ifp ≠ 1, then
        1. Leta be the first code unit ofm.
        2. Letb be the otherp - 1 code units ofm.
        3. Setm to thestring-concatenation ofa,".", andb.
      3. Ife > 0, then
        1. Letc be the code unit 0x002B (PLUS SIGN).
      4. Else,
        1. Assert:e < 0.
        2. Letc be the code unit 0x002D (HYPHEN-MINUS).
        3. Sete to -e.
      5. Letd be the String value consisting of the digits of the decimal representation ofe (in order, with no leading zeroes).
      6. Return thestring-concatenation ofs,m, the code unit 0x0065 (LATIN SMALL LETTER E),c, andd.
  11. Ife =p - 1, return thestring-concatenation ofs andm.
  12. Ife ≥ 0, then
    1. Setm to thestring-concatenation of the firste + 1 code units ofm, the code unit 0x002E (FULL STOP), and the remainingp - (e + 1) code units ofm.
  13. Else,
    1. Setm to thestring-concatenation of the code unit 0x0030 (DIGIT ZERO), the code unit 0x002E (FULL STOP), -(e + 1) occurrences of the code unit 0x0030 (DIGIT ZERO), and the Stringm.
  14. Return thestring-concatenation ofs andm.

21.1.3.6 Number.prototype.toString ( [radix ] )

Note

The optionalradix should be anintegral Number value in theinclusive interval from2𝔽 to36𝔽. Ifradix isundefined then10𝔽 is used as the value ofradix.

This method performs the following steps when called:

  1. Letx be ? ThisNumberValue(this value).
  2. Ifradix isundefined, letradixMV be 10.
  3. Else, letradixMV be ? ToIntegerOrInfinity(radix).
  4. IfradixMV is not in theinclusive interval from 2 to 36, throw aRangeError exception.
  5. ReturnNumber::toString(x,radixMV).

This method is not generic; it throws aTypeError exception if itsthis valueis not a Number or a Number object. Therefore, it cannot be transferred to other kinds of objects for use as a method.

The"length" property of this method is1𝔽.

21.1.3.7 Number.prototype.valueOf ( )

  1. Return ? ThisNumberValue(this value).

21.1.3.7.1 ThisNumberValue (value )

The abstract operation ThisNumberValue takes argumentvalue (anECMAScript language value) and returns either anormal completion containing a Number or athrow completion. It performs the following steps when called:

  1. Ifvalueis a Number, returnvalue.
  2. Ifvalueis an Object andvalue has a[[NumberData]] internal slot, then
    1. Letn bevalue.[[NumberData]].
    2. Assert:nis a Number.
    3. Returnn.
  3. Throw aTypeError exception.

21.1.4 Properties of Number Instances

Number instances areordinary objects that inherit properties from theNumber prototype object. Number instances also have a[[NumberData]] internal slot. The[[NumberData]] internal slot is the Number value represented by this Number object.

21.2 BigInt Objects

21.2.1 The BigInt Constructor

The BigIntconstructor:

  • is%BigInt%.
  • is the initial value of the"BigInt" property of theglobal object.
  • performs a type conversion when called as a function rather than as aconstructor.
  • is not intended to be used with thenew operator or to be subclassed. It may be used as the value of anextends clause of a class definition but asuper call to the BigIntconstructor will cause an exception.

21.2.1.1 BigInt (value )

This function performs the following steps when called:

  1. If NewTarget is notundefined, throw aTypeError exception.
  2. Letprim be ? ToPrimitive(value,number).
  3. Ifprimis a Number, return ? NumberToBigInt(prim).
  4. Otherwise, return ? ToBigInt(prim).

21.2.1.1.1 NumberToBigInt (number )

The abstract operation NumberToBigInt takes argumentnumber (a Number) and returns either anormal completion containing a BigInt or athrow completion. It performs the following steps when called:

  1. Ifnumber is not anintegral Number, throw aRangeError exception.
  2. Return((number)).

21.2.2 Properties of the BigInt Constructor

The BigIntconstructor:

21.2.2.1 BigInt.asIntN (bits,bigint )

This function performs the following steps when called:

  1. Setbits to ? ToIndex(bits).
  2. Setbigint to ? ToBigInt(bigint).
  3. Letmod be(bigint)modulo 2bits.
  4. Ifmod ≥ 2bits - 1, return(mod - 2bits); otherwise return(mod).

21.2.2.2 BigInt.asUintN (bits,bigint )

This function performs the following steps when called:

  1. Setbits to ? ToIndex(bits).
  2. Setbigint to ? ToBigInt(bigint).
  3. Return((bigint)modulo 2bits).

21.2.2.3 BigInt.prototype

The initial value ofBigInt.prototype is theBigInt prototype object.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.2.3 Properties of the BigInt Prototype Object

TheBigInt prototype object:

The phrase “this BigInt value” within the specification of a method refers to the result returned by calling the abstract operationThisBigIntValue with thethis value of the method invocation passed as the argument.

21.2.3.1 BigInt.prototype.constructor

The initial value ofBigInt.prototype.constructor is%BigInt%.

21.2.3.2 BigInt.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )

An ECMAScript implementation that includes the ECMA-402 Internationalization API must implement this method as specified in the ECMA-402 specification. If an ECMAScript implementation does not include the ECMA-402 API the following specification of this method is used:

This method produces a String value that represents this BigInt value formatted according to the conventions of thehost environment's current locale. This method isimplementation-defined, and it is permissible, but not encouraged, for it to return the same thing astoString.

The meanings of the optional parameters to this method are defined in the ECMA-402 specification; implementations that do not include ECMA-402 support must not use those parameter positions for anything else.

21.2.3.3 BigInt.prototype.toString ( [radix ] )

Note

The optionalradix should be anintegral Number value in theinclusive interval from2𝔽 to36𝔽. Ifradix isundefined then10𝔽 is used as the value ofradix.

This method performs the following steps when called:

  1. Letx be ? ThisBigIntValue(this value).
  2. Ifradix isundefined, letradixMV be 10.
  3. Else, letradixMV be ? ToIntegerOrInfinity(radix).
  4. IfradixMV is not in theinclusive interval from 2 to 36, throw aRangeError exception.
  5. ReturnBigInt::toString(x,radixMV).

This method is not generic; it throws aTypeError exception if itsthis valueis not a BigInt or a BigInt object. Therefore, it cannot be transferred to other kinds of objects for use as a method.

21.2.3.4 BigInt.prototype.valueOf ( )

  1. Return ? ThisBigIntValue(this value).

21.2.3.4.1 ThisBigIntValue (value )

The abstract operation ThisBigIntValue takes argumentvalue (anECMAScript language value) and returns either anormal completion containing a BigInt or athrow completion. It performs the following steps when called:

  1. Ifvalueis a BigInt, returnvalue.
  2. Ifvalueis an Object andvalue has a[[BigIntData]] internal slot, then
    1. Assert:value.[[BigIntData]]is a BigInt.
    2. Returnvalue.[[BigIntData]].
  3. Throw aTypeError exception.

21.2.3.5 BigInt.prototype [ %Symbol.toStringTag% ]

The initial value of the%Symbol.toStringTag% property is the String value"BigInt".

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:true }.

21.2.4 Properties of BigInt Instances

BigInt instances areordinary objects that inherit properties from theBigInt prototype object. BigInt instances also have a[[BigIntData]] internal slot. The[[BigIntData]] internal slot is the BigInt value represented by this BigInt object.

21.3 The Math Object

The Math object:

  • is%Math%.
  • is the initial value of the"Math" property of theglobal object.
  • is anordinary object.
  • has a[[Prototype]] internal slot whose value is%Object.prototype%.
  • is not afunction object.
  • does not have a[[Construct]] internal method; it cannot be used as aconstructor with thenew operator.
  • does not have a[[Call]] internal method; it cannot be invoked as a function.
Note

In this specification, the phrase “theNumber value forx” has a technical meaning defined in6.1.6.1.

21.3.1 Value Properties of the Math Object

21.3.1.1 Math.E

TheNumber value fore, the base of the natural logarithms, which is approximately 2.7182818284590452354.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.3.1.2 Math.LN10

TheNumber value for the natural logarithm of 10, which is approximately 2.302585092994046.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.3.1.3 Math.LN2

TheNumber value for the natural logarithm of 2, which is approximately 0.6931471805599453.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.3.1.4 Math.LOG10E

TheNumber value for the base-10 logarithm ofe, the base of the natural logarithms; this value is approximately 0.4342944819032518.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

Note

The value ofMath.LOG10E is approximately the reciprocal of the value ofMath.LN10.

21.3.1.5 Math.LOG2E

TheNumber value for the base-2 logarithm ofe, the base of the natural logarithms; this value is approximately 1.4426950408889634.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

Note

The value ofMath.LOG2E is approximately the reciprocal of the value ofMath.LN2.

21.3.1.6 Math.PI

TheNumber value for π, the ratio of the circumference of a circle to its diameter, which is approximately 3.1415926535897932.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.3.1.7 Math.SQRT1_2

TheNumber value for the square root of ½, which is approximately 0.7071067811865476.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

Note

The value ofMath.SQRT1_2 is approximately the reciprocal of the value ofMath.SQRT2.

21.3.1.8 Math.SQRT2

TheNumber value for the square root of 2, which is approximately 1.4142135623730951.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.3.1.9 Math [ %Symbol.toStringTag% ]

The initial value of the%Symbol.toStringTag% property is the String value"Math".

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:true }.

21.3.2 Function Properties of the Math Object

Note

The behaviour of the functionsacos,acosh,asin,asinh,atan,atanh,atan2,cbrt,cos,cosh,exp,expm1,hypot,log,log1p,log2,log10,pow,random,sin,sinh,tan, andtanh is not precisely specified here except to require specific results for certain argument values that represent boundary cases of interest. For other argument values, these functions are intended to compute approximations to the results of familiar mathematical functions, but some latitude is allowed in the choice of approximation algorithms. The general intent is that an implementer should be able to use the same mathematical library for ECMAScript on a given hardware platform that is available to C programmers on that platform.

Although the choice of algorithms is left to the implementation, it is recommended (but not specified by this standard) that implementations use the approximation algorithms forIEEE 754-2019 arithmetic contained infdlibm, the freely distributable mathematical library from Sun Microsystems (http://www.netlib.org/fdlibm).

21.3.2.1 Math.abs (x )

This function returns the absolute value ofx; the result has the same magnitude asx but has positive sign.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn isNaN, returnNaN.
  3. Ifn is-0𝔽, return+0𝔽.
  4. Ifn is-∞𝔽, return+∞𝔽.
  5. Ifn <-0𝔽, return -n.
  6. Returnn.

21.3.2.2 Math.acos (x )

This function returns the inverse cosine ofx. The result is expressed in radians and is in theinclusive interval from+0𝔽 to𝔽(π).

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn isNaN,n >1𝔽, orn <-1𝔽, returnNaN.
  3. Ifn is1𝔽, return+0𝔽.
  4. Return animplementation-approximated Number value representing the inverse cosine of(n).

21.3.2.3 Math.acosh (x )

This function returns the inverse hyperbolic cosine ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is eitherNaN or+∞𝔽, returnn.
  3. Ifn is1𝔽, return+0𝔽.
  4. Ifn <1𝔽, returnNaN.
  5. Return animplementation-approximated Number value representing the inverse hyperbolic cosine of(n).

21.3.2.4 Math.asin (x )

This function returns the inverse sine ofx. The result is expressed in radians and is in theinclusive interval from𝔽(-π / 2) to𝔽(π / 2).

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽, or-0𝔽, returnn.
  3. Ifn >1𝔽 orn <-1𝔽, returnNaN.
  4. Return animplementation-approximated Number value representing the inverse sine of(n).

21.3.2.5 Math.asinh (x )

This function returns the inverse hyperbolic sine ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is notfinite orn is either+0𝔽 or-0𝔽, returnn.
  3. Return animplementation-approximated Number value representing the inverse hyperbolic sine of(n).

21.3.2.6 Math.atan (x )

This function returns the inverse tangent ofx. The result is expressed in radians and is in theinclusive interval from𝔽(-π / 2) to𝔽(π / 2).

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽, or-0𝔽, returnn.
  3. Ifn is+∞𝔽, return animplementation-approximated Number value representing π / 2.
  4. Ifn is-∞𝔽, return animplementation-approximated Number value representing -π / 2.
  5. Return animplementation-approximated Number value representing the inverse tangent of(n).

21.3.2.7 Math.atanh (x )

This function returns the inverse hyperbolic tangent ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽, or-0𝔽, returnn.
  3. Ifn >1𝔽 orn <-1𝔽, returnNaN.
  4. Ifn is1𝔽, return+∞𝔽.
  5. Ifn is-1𝔽, return-∞𝔽.
  6. Return animplementation-approximated Number value representing the inverse hyperbolic tangent of(n).

21.3.2.8 Math.atan2 (y,x )

This function returns the inverse tangent of the quotienty /x of the argumentsy andx, where the signs ofy andx are used to determine the quadrant of the result. Note that it is intentional and traditional for the two-argument inverse tangent function that the argument namedy be first and the argument namedx be second. The result is expressed in radians and is in theinclusive interval from -π to +π.

It performs the following steps when called:

  1. Letny be ? ToNumber(y).
  2. Letnx be ? ToNumber(x).
  3. Ifny isNaN ornx isNaN, returnNaN.
  4. Ifny is+∞𝔽, then
    1. Ifnx is+∞𝔽, return animplementation-approximated Number value representing π / 4.
    2. Ifnx is-∞𝔽, return animplementation-approximated Number value representing 3π / 4.
    3. Return animplementation-approximated Number value representing π / 2.
  5. Ifny is-∞𝔽, then
    1. Ifnx is+∞𝔽, return animplementation-approximated Number value representing -π / 4.
    2. Ifnx is-∞𝔽, return animplementation-approximated Number value representing -3π / 4.
    3. Return animplementation-approximated Number value representing -π / 2.
  6. Ifny is+0𝔽, then
    1. Ifnx >+0𝔽 ornx is+0𝔽, return+0𝔽.
    2. Return animplementation-approximated Number value representing π.
  7. Ifny is-0𝔽, then
    1. Ifnx >+0𝔽 ornx is+0𝔽, return-0𝔽.
    2. Return animplementation-approximated Number value representing -π.
  8. Assert:ny isfinite and is neither+0𝔽 nor-0𝔽.
  9. Ifny >+0𝔽, then
    1. Ifnx is+∞𝔽, return+0𝔽.
    2. Ifnx is-∞𝔽, return animplementation-approximated Number value representing π.
    3. Ifnx is either+0𝔽 or-0𝔽, return animplementation-approximated Number value representing π / 2.
  10. Ifny <-0𝔽, then
    1. Ifnx is+∞𝔽, return-0𝔽.
    2. Ifnx is-∞𝔽, return animplementation-approximated Number value representing -π.
    3. Ifnx is either+0𝔽 or-0𝔽, return animplementation-approximated Number value representing -π / 2.
  11. Assert:nx isfinite and is neither+0𝔽 nor-0𝔽.
  12. Letr be the inverse tangent ofabs((ny) /(nx)).
  13. Ifnx <-0𝔽, then
    1. Ifny >+0𝔽, setr to π -r.
    2. Else, setr to -π +r.
  14. Else,
    1. Ifny <-0𝔽, setr to -r.
  15. Return animplementation-approximated Number value representingr.

21.3.2.9 Math.cbrt (x )

This function returns the cube root ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is notfinite orn is either+0𝔽 or-0𝔽, returnn.
  3. Return animplementation-approximated Number value representing the cube root of(n).

21.3.2.10 Math.ceil (x )

This function returns the smallest (closest to -∞)integral Number value that is not less thanx. Ifx is already anintegral Number, the result isx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is notfinite orn is either+0𝔽 or-0𝔽, returnn.
  3. Ifn <-0𝔽 andn >-1𝔽, return-0𝔽.
  4. Ifn is anintegral Number, returnn.
  5. Return the smallest (closest to -∞)integral Number value that is not less thann.
Note

The value ofMath.ceil(x) is the same as the value of-Math.floor(-x).

21.3.2.11 Math.clz32 (x )

This function performs the following steps when called:

  1. Letn be ? ToUint32(x).
  2. Letp be the number of leading zero bits in the unsigned 32-bit binary representation ofn.
  3. Return𝔽(p).
Note

Ifn is either+0𝔽 or-0𝔽, this method returns32𝔽. If the most significant bit of the 32-bit binary encoding ofn is 1, this method returns+0𝔽.

21.3.2.12 Math.cos (x )

This function returns the cosine ofx. The argument is expressed in radians.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is notfinite, returnNaN.
  3. Ifn is either+0𝔽 or-0𝔽, return1𝔽.
  4. Return animplementation-approximated Number value representing the cosine of(n).

21.3.2.13 Math.cosh (x )

This function returns the hyperbolic cosine ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn isNaN, returnNaN.
  3. Ifn is either+∞𝔽 or-∞𝔽, return+∞𝔽.
  4. Ifn is either+0𝔽 or-0𝔽, return1𝔽.
  5. Return animplementation-approximated Number value representing the hyperbolic cosine of(n).
Note

The value ofMath.cosh(x) is the same as the value of(Math.exp(x) + Math.exp(-x)) / 2.

21.3.2.14 Math.exp (x )

This function returns the exponential function ofx (e raised to the power ofx, wheree is the base of the natural logarithms).

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is eitherNaN or+∞𝔽, returnn.
  3. Ifn is either+0𝔽 or-0𝔽, return1𝔽.
  4. Ifn is-∞𝔽, return+0𝔽.
  5. Return animplementation-approximated Number value representing the exponential function of(n).

21.3.2.15 Math.expm1 (x )

This function returns the result of subtracting 1 from the exponential function ofx (e raised to the power ofx, wheree is the base of the natural logarithms). The result is computed in a way that is accurate even when the value ofx is close to 0.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽,-0𝔽, or+∞𝔽, returnn.
  3. Ifn is-∞𝔽, return-1𝔽.
  4. Letexp be the exponential function of(n).
  5. Return animplementation-approximated Number value representingexp - 1.

21.3.2.16 Math.floor (x )

This function returns the greatest (closest to +∞)integral Number value that is not greater thanx. Ifx is already anintegral Number, the result isx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is notfinite orn is either+0𝔽 or-0𝔽, returnn.
  3. Ifn <1𝔽 andn >+0𝔽, return+0𝔽.
  4. Ifn is anintegral Number, returnn.
  5. Return the greatest (closest to +∞)integral Number value that is not greater thann.
Note

The value ofMath.floor(x) is the same as the value of-Math.ceil(-x).

21.3.2.17 Math.fround (x )

This function performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn isNaN, returnNaN.
  3. Ifn is one of+0𝔽,-0𝔽,+∞𝔽, or-∞𝔽, returnn.
  4. Letn32 be the result of convertingn toIEEE 754-2019 binary32 format using roundTiesToEven mode.
  5. Letn64 be the result of convertingn32 toIEEE 754-2019 binary64 format.
  6. Return the ECMAScript Number value corresponding ton64.

21.3.2.18 Math.f16round (x )

This function performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn isNaN, returnNaN.
  3. Ifn is one of+0𝔽,-0𝔽,+∞𝔽, or-∞𝔽, returnn.
  4. Letn16 be the result of convertingn toIEEE 754-2019 binary16 format using roundTiesToEven mode.
  5. Letn64 be the result of convertingn16 toIEEE 754-2019 binary64 format.
  6. Return the ECMAScript Number value corresponding ton64.
Note

This operation is not the same as casting to binary32 and then to binary16 because of the possibility of double-rounding: consider the numberk =1.00048828125000022204𝔽, for example, for which Math.f16round(k) is1.0009765625𝔽, but Math.f16round(Math.fround(k)) is1𝔽.

Not all platforms provide native support for casting from binary64 to binary16. There are various libraries which can provide this, including the MIT-licensedhalf library. Alternatively, it is possible to first cast from binary64 to binary32 under roundTiesToEven and then check whether the result could lead to incorrect double-rounding. The cases which could can be handled explicitly by adjusting the mantissa of the binary32 value so that it is the value which would be produced by performing the initial cast under roundTiesToOdd. Casting the adjusted value to binary16 under roundTiesToEven then produces the correct value.

21.3.2.19 Math.hypot ( ...args )

Given zero or more arguments, this function returns the square root of the sum of squares of its arguments.

It performs the following steps when called:

  1. Letcoerced be a new emptyList.
  2. For each elementarg ofargs, do
    1. Letn be ? ToNumber(arg).
    2. Appendn tocoerced.
  3. For each elementnumber ofcoerced, do
    1. Ifnumber is either+∞𝔽 or-∞𝔽, return+∞𝔽.
  4. LetonlyZero betrue.
  5. For each elementnumber ofcoerced, do
    1. Ifnumber isNaN, returnNaN.
    2. Ifnumber is neither+0𝔽 nor-0𝔽, setonlyZero tofalse.
  6. IfonlyZero istrue, return+0𝔽.
  7. Return animplementation-approximated Number value representing the square root of the sum of squares of themathematical values of the elements ofcoerced.

The"length" property of this function is2𝔽.

Note

Implementations should take care to avoid the loss of precision from overflows and underflows that are prone to occur in naive implementations when this function is called with two or more arguments.

21.3.2.20 Math.imul (x,y )

This function performs the following steps when called:

  1. Leta be(?ToUint32(x)).
  2. Letb be(?ToUint32(y)).
  3. Letproduct be (a ×b)modulo 232.
  4. Ifproduct ≥ 231, return𝔽(product - 232); otherwise return𝔽(product).

21.3.2.21 Math.log (x )

This function returns the natural logarithm ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is eitherNaN or+∞𝔽, returnn.
  3. Ifn is1𝔽, return+0𝔽.
  4. Ifn is either+0𝔽 or-0𝔽, return-∞𝔽.
  5. Ifn <-0𝔽, returnNaN.
  6. Return animplementation-approximated Number value representing the natural logarithm of(n).

21.3.2.22 Math.log1p (x )

This function returns the natural logarithm of 1 +x. The result is computed in a way that is accurate even when the value of x is close to zero.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽,-0𝔽, or+∞𝔽, returnn.
  3. Ifn is-1𝔽, return-∞𝔽.
  4. Ifn <-1𝔽, returnNaN.
  5. Return animplementation-approximated Number value representing the natural logarithm of 1 +(n).

21.3.2.23 Math.log10 (x )

This function returns the base 10 logarithm ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is eitherNaN or+∞𝔽, returnn.
  3. Ifn is1𝔽, return+0𝔽.
  4. Ifn is either+0𝔽 or-0𝔽, return-∞𝔽.
  5. Ifn <-0𝔽, returnNaN.
  6. Return animplementation-approximated Number value representing the base 10 logarithm of(n).

21.3.2.24 Math.log2 (x )

This function returns the base 2 logarithm ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is eitherNaN or+∞𝔽, returnn.
  3. Ifn is1𝔽, return+0𝔽.
  4. Ifn is either+0𝔽 or-0𝔽, return-∞𝔽.
  5. Ifn <-0𝔽, returnNaN.
  6. Return animplementation-approximated Number value representing the base 2 logarithm of(n).

21.3.2.25 Math.max ( ...args )

Given zero or more arguments, this function callsToNumber on each of the arguments and returns the largest of the resulting values.

It performs the following steps when called:

  1. Letcoerced be a new emptyList.
  2. For each elementarg ofargs, do
    1. Letn be ? ToNumber(arg).
    2. Appendn tocoerced.
  3. Lethighest be-∞𝔽.
  4. For each elementnumber ofcoerced, do
    1. Ifnumber isNaN, returnNaN.
    2. Ifnumber is+0𝔽 andhighest is-0𝔽, sethighest to+0𝔽.
    3. Ifnumber >highest, sethighest tonumber.
  5. Returnhighest.
Note

The comparison of values to determine the largest value is done using theIsLessThan algorithm except that+0𝔽 is considered to be larger than-0𝔽.

The"length" property of this function is2𝔽.

21.3.2.26 Math.min ( ...args )

Given zero or more arguments, this function callsToNumber on each of the arguments and returns the smallest of the resulting values.

It performs the following steps when called:

  1. Letcoerced be a new emptyList.
  2. For each elementarg ofargs, do
    1. Letn be ? ToNumber(arg).
    2. Appendn tocoerced.
  3. Letlowest be+∞𝔽.
  4. For each elementnumber ofcoerced, do
    1. Ifnumber isNaN, returnNaN.
    2. Ifnumber is-0𝔽 andlowest is+0𝔽, setlowest to-0𝔽.
    3. Ifnumber <lowest, setlowest tonumber.
  5. Returnlowest.
Note

The comparison of values to determine the largest value is done using theIsLessThan algorithm except that+0𝔽 is considered to be larger than-0𝔽.

The"length" property of this function is2𝔽.

21.3.2.27 Math.pow (base,exponent )

This function performs the following steps when called:

  1. Setbase to ? ToNumber(base).
  2. Setexponent to ? ToNumber(exponent).
  3. ReturnNumber::exponentiate(base,exponent).

21.3.2.28 Math.random ( )

This function returns a Number value with positive sign, greater than or equal to+0𝔽 but strictly less than1𝔽, chosen randomly or pseudo randomly with approximately uniform distribution over that range, using animplementation-defined algorithm or strategy.

EachMath.random function created for distinctrealms must produce a distinct sequence of values from successive calls.

21.3.2.29 Math.round (x )

This function returns the Number value that is closest tox and is integral. If twointegral Numbers are equally close tox, then the result is the Number value that is closer to +∞. Ifx is already integral, the result isx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is notfinite orn is anintegral Number, returnn.
  3. Ifn <0.5𝔽 andn >+0𝔽, return+0𝔽.
  4. Ifn <-0𝔽 andn-0.5𝔽, return-0𝔽.
  5. Return theintegral Number closest ton, preferring the Number closer to +∞ in the case of a tie.
Note 1

Math.round(3.5) returns 4, butMath.round(-3.5) returns -3.

Note 2

The value ofMath.round(x) is not always the same as the value ofMath.floor(x + 0.5). Whenx is-0𝔽 orx is less than-0𝔽 but greater than or equal to-0.5𝔽,Math.round(x) returns-0𝔽, butMath.floor(x + 0.5) returns+0𝔽.Math.round(x) may also differ from the value ofMath.floor(x + 0.5)because of internal rounding when computingx + 0.5.

21.3.2.30 Math.sign (x )

This function returns the sign ofx, indicating whetherx is positive, negative, or zero.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽, or-0𝔽, returnn.
  3. Ifn <-0𝔽, return-1𝔽.
  4. Return1𝔽.

21.3.2.31 Math.sin (x )

This function returns the sine ofx. The argument is expressed in radians.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽, or-0𝔽, returnn.
  3. Ifn is either+∞𝔽 or-∞𝔽, returnNaN.
  4. Return animplementation-approximated Number value representing the sine of(n).

21.3.2.32 Math.sinh (x )

This function returns the hyperbolic sine ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is notfinite orn is either+0𝔽 or-0𝔽, returnn.
  3. Return animplementation-approximated Number value representing the hyperbolic sine of(n).
Note

The value ofMath.sinh(x) is the same as the value of(Math.exp(x) - Math.exp(-x)) / 2.

21.3.2.33 Math.sqrt (x )

This function returns the square root ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽,-0𝔽, or+∞𝔽, returnn.
  3. Ifn <-0𝔽, returnNaN.
  4. Return𝔽(the square root of(n)).

21.3.2.34 Math.sumPrecise (items )

Given aniterable of Numbers, this function sums each value in theiterable and returns their sum. If any valueis not a Number it throws aTypeError exception.

It performs the following steps when called:

  1. Perform ? RequireObjectCoercible(items).
  2. LetiteratorRecord be ? GetIterator(items,sync).
  3. Letstate beminus-zero.
  4. Letsum be 0.
  5. Letcount be 0.
  6. Letnext benot-started.
  7. Repeat, whilenext is notdone,
    1. Setnext to ? IteratorStepValue(iteratorRecord).
    2. Ifnext is notdone, then
      1. Ifcount ≥ 253 - 1, then
        1. NOTE: This step is not expected to be reached in practice and is included only so that implementations may rely on inputs being "reasonably sized" without violating this specification.
        2. Leterror beThrowCompletion(a newly createdRangeError object).
        3. Return ? IteratorClose(iteratorRecord,error).
      2. Ifnextis not a Number, then
        1. Leterror beThrowCompletion(a newly createdTypeError object).
        2. Return ? IteratorClose(iteratorRecord,error).
      3. Letn benext.
      4. Ifstate is notnot-a-number, then
        1. Ifn isNaN, then
          1. Setstate tonot-a-number.
        2. Else ifn is+∞𝔽, then
          1. Ifstate isminus-infinity, setstate tonot-a-number.
          2. Else, setstate toplus-infinity.
        3. Else ifn is-∞𝔽, then
          1. Ifstate isplus-infinity, setstate tonot-a-number.
          2. Else, setstate tominus-infinity.
        4. Else ifn is not-0𝔽 andstate is eitherminus-zero orfinite, then
          1. Setstate tofinite.
          2. Setsum tosum +(n).
      5. Setcount tocount + 1.
  8. Ifstate isnot-a-number, returnNaN.
  9. Ifstate isplus-infinity, return+∞𝔽.
  10. Ifstate isminus-infinity, return-∞𝔽.
  11. Ifstate isminus-zero, return-0𝔽.
  12. Return𝔽(sum).
Note

The value ofsum can be computed without arbitrary-precision arithmetic by a variety of algorithms. One such is the "Grow-Expansion" algorithm given inAdaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates by Jonathan Richard Shewchuk. A more recent algorithm is given in "Fast exact summation using small and large superaccumulators", code for which is available athttps://gitlab.com/radfordneal/xsum.

21.3.2.35 Math.tan (x )

This function returns the tangent ofx. The argument is expressed in radians.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽, or-0𝔽, returnn.
  3. Ifn is either+∞𝔽 or-∞𝔽, returnNaN.
  4. Return animplementation-approximated Number value representing the tangent of(n).

21.3.2.36 Math.tanh (x )

This function returns the hyperbolic tangent ofx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is one ofNaN,+0𝔽, or-0𝔽, returnn.
  3. Ifn is+∞𝔽, return1𝔽.
  4. Ifn is-∞𝔽, return-1𝔽.
  5. Return animplementation-approximated Number value representing the hyperbolic tangent of(n).
Note

The value ofMath.tanh(x) is the same as the value of(Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x)).

21.3.2.37 Math.trunc (x )

This function returns the integral part of the numberx, removing any fractional digits. Ifx is already integral, the result isx.

It performs the following steps when called:

  1. Letn be ? ToNumber(x).
  2. Ifn is notfinite orn is either+0𝔽 or-0𝔽, returnn.
  3. Ifn <1𝔽 andn >+0𝔽, return+0𝔽.
  4. Ifn <-0𝔽 andn >-1𝔽, return-0𝔽.
  5. Return theintegral Number nearestn in the direction of+0𝔽.

21.4 Date Objects

21.4.1 Overview of Date Objects and Definitions of Abstract Operations

The followingabstract operations operate ontime values (defined in21.4.1.1). Note that, in every case, if any argument to one of these functions isNaN, the result will beNaN.

21.4.1.1 Time Values and Time Range

Time measurement in ECMAScript is analogous to time measurement in POSIX, in particular sharing definition in terms of the proleptic Gregorian calendar, anepoch of midnight at the beginning of 1 January 1970 UTC, and an accounting of every day as comprising exactly 86,400 seconds (each of which is 1000 milliseconds long).

An ECMAScripttime valueis a Number, either afiniteintegral Number representing an instant in time to millisecond precision orNaN representing no specific instant. A time value that is a multiple of24 × 60 × 60 × 1000 = 86,400,000 (i.e., is 86,400,000 ×d for someintegerd) represents the instant at the start of the UTC day that follows theepoch byd whole UTC days (preceding theepoch for negatived). Every otherfinite time valuet is defined relative to the greatest preceding time values that is such a multiple, and represents the instant that occurs within the same UTC day ass but follows it by (t -s) milliseconds.

Time values do not account for UTC leap seconds—there are no time values representing instants within positive leap seconds, and there are time values representing instants removed from the UTC timeline by negative leap seconds. However, the definition of time values nonetheless yields piecewise alignment with UTC, with discontinuities only at leap second boundaries and zero difference outside of leap seconds.

A Number can exactly represent allintegers from -9,007,199,254,740,992 to 9,007,199,254,740,992 (21.1.2.8 and21.1.2.6). A time value supports a slightly smaller range of -8,640,000,000,000,000 to 8,640,000,000,000,000 milliseconds. This yields a supported time value range of exactly -100,000,000 days to 100,000,000 days relative to midnight at the beginning of 1 January 1970 UTC.

The exact moment of midnight at the beginning of 1 January 1970 UTC is represented by the time value+0𝔽.

Note

In the proleptic Gregorian calendar, leap years are precisely those which are both divisible by 4 and either divisible by 400 or not divisible by 100.

The 400 year cycle of the proleptic Gregorian calendar contains 97 leap years. This yields an average of 365.2425 days per year, which is 31,556,952,000 milliseconds. Therefore, the maximum range a Number could represent exactly with millisecond precision is approximately -285,426 to 285,426 years relative to 1970. The smaller range supported by a time value as specified in this section is approximately -273,790 to 273,790 years relative to 1970.

21.4.1.2 Time-related Constants

These constants are referenced by algorithms in the following sections.

HoursPerDay = 24
MinutesPerHour = 60
SecondsPerMinute = 60
msPerSecond =1000𝔽
msPerMinute =60000𝔽 =msPerSecond ×𝔽(SecondsPerMinute)
msPerHour =3600000𝔽 =msPerMinute ×𝔽(MinutesPerHour)
msPerDay =86400000𝔽 =msPerHour ×𝔽(HoursPerDay)

21.4.1.3 Day (t )

The abstract operation Day takes argumentt (afinitetime value) and returns anintegral Number. It returns the day number of the day in whicht falls. It performs the following steps when called:

  1. Return𝔽(floor((t /msPerDay))).

21.4.1.4 TimeWithinDay (t )

The abstract operation TimeWithinDay takes argumentt (afinitetime value) and returns anintegral Number in theinterval from+0𝔽 (inclusive) tomsPerDay (exclusive). It returns the number of milliseconds since the start of the day in whicht falls. It performs the following steps when called:

  1. Return𝔽((t)modulo(msPerDay)).

21.4.1.5 DaysInYear (y )

The abstract operation DaysInYear takes argumenty (anintegral Number) and returns365𝔽 or366𝔽. It returns the number of days in yeary. Leap years have 366 days; all other years have 365. It performs the following steps when called:

  1. Letry be(y).
  2. If (rymodulo 400) = 0, return366𝔽.
  3. If (rymodulo 100) = 0, return365𝔽.
  4. If (rymodulo 4) = 0, return366𝔽.
  5. Return365𝔽.

21.4.1.6 DayFromYear (y )

The abstract operation DayFromYear takes argumenty (anintegral Number) and returns anintegral Number. It returns the day number of the first day of yeary. It performs the following steps when called:

  1. Letry be(y).
  2. NOTE: In the following steps,numYears1,numYears4,numYears100, andnumYears400 represent the number of years divisible by 1, 4, 100, and 400, respectively, that occur between theepoch and the start of yeary. The number is negative ify is before theepoch.
  3. LetnumYears1 be (ry - 1970).
  4. LetnumYears4 befloor((ry - 1969) / 4).
  5. LetnumYears100 befloor((ry - 1901) / 100).
  6. LetnumYears400 befloor((ry - 1601) / 400).
  7. Return𝔽(365 ×numYears1 +numYears4 -numYears100 +numYears400).

21.4.1.7 TimeFromYear (y )

The abstract operation TimeFromYear takes argumenty (anintegral Number) and returns atime value. It returns thetime value of the start of yeary. It performs the following steps when called:

  1. ReturnmsPerDay ×DayFromYear(y).

21.4.1.8 YearFromTime (t )

The abstract operation YearFromTime takes argumentt (afinitetime value) and returns anintegral Number. It returns the year in whicht falls. It performs the following steps when called:

  1. Return the largestintegral Numbery (closest to +∞) such thatTimeFromYear(y) ≤t.

21.4.1.9 DayWithinYear (t )

The abstract operation DayWithinYear takes argumentt (afinitetime value) and returns anintegral Number in theinclusive interval from+0𝔽 to365𝔽. It performs the following steps when called:

  1. ReturnDay(t) -DayFromYear(YearFromTime(t)).

21.4.1.10 InLeapYear (t )

The abstract operation InLeapYear takes argumentt (afinitetime value) and returns+0𝔽 or1𝔽. It returns1𝔽 ift is within a leap year and+0𝔽 otherwise. It performs the following steps when called:

  1. IfDaysInYear(YearFromTime(t)) is366𝔽, return1𝔽; else return+0𝔽.

21.4.1.11 MonthFromTime (t )

The abstract operation MonthFromTime takes argumentt (afinitetime value) and returns anintegral Number in theinclusive interval from+0𝔽 to11𝔽. It returns a Number identifying the month in whicht falls. A month value of+0𝔽 specifies January;1𝔽 specifies February;2𝔽 specifies March;3𝔽 specifies April;4𝔽 specifies May;5𝔽 specifies June;6𝔽 specifies July;7𝔽 specifies August;8𝔽 specifies September;9𝔽 specifies October;10𝔽 specifies November; and11𝔽 specifies December. Note thatMonthFromTime(+0𝔽) =+0𝔽, corresponding to Thursday, 1 January 1970. It performs the following steps when called:

  1. LetinLeapYear beInLeapYear(t).
  2. LetdayWithinYear beDayWithinYear(t).
  3. IfdayWithinYear <31𝔽, return+0𝔽.
  4. IfdayWithinYear <59𝔽 +inLeapYear, return1𝔽.
  5. IfdayWithinYear <90𝔽 +inLeapYear, return2𝔽.
  6. IfdayWithinYear <120𝔽 +inLeapYear, return3𝔽.
  7. IfdayWithinYear <151𝔽 +inLeapYear, return4𝔽.
  8. IfdayWithinYear <181𝔽 +inLeapYear, return5𝔽.
  9. IfdayWithinYear <212𝔽 +inLeapYear, return6𝔽.
  10. IfdayWithinYear <243𝔽 +inLeapYear, return7𝔽.
  11. IfdayWithinYear <273𝔽 +inLeapYear, return8𝔽.
  12. IfdayWithinYear <304𝔽 +inLeapYear, return9𝔽.
  13. IfdayWithinYear <334𝔽 +inLeapYear, return10𝔽.
  14. Assert:dayWithinYear <365𝔽 +inLeapYear.
  15. Return11𝔽.

21.4.1.12 DateFromTime (t )

The abstract operation DateFromTime takes argumentt (afinitetime value) and returns anintegral Number in theinclusive interval from1𝔽 to31𝔽. It returns the day of the month in whicht falls. It performs the following steps when called:

  1. LetinLeapYear beInLeapYear(t).
  2. LetdayWithinYear beDayWithinYear(t).
  3. Letmonth beMonthFromTime(t).
  4. Ifmonth is+0𝔽, returndayWithinYear +1𝔽.
  5. Ifmonth is1𝔽, returndayWithinYear -30𝔽.
  6. Ifmonth is2𝔽, returndayWithinYear -58𝔽 -inLeapYear.
  7. Ifmonth is3𝔽, returndayWithinYear -89𝔽 -inLeapYear.
  8. Ifmonth is4𝔽, returndayWithinYear -119𝔽 -inLeapYear.
  9. Ifmonth is5𝔽, returndayWithinYear -150𝔽 -inLeapYear.
  10. Ifmonth is6𝔽, returndayWithinYear -180𝔽 -inLeapYear.
  11. Ifmonth is7𝔽, returndayWithinYear -211𝔽 -inLeapYear.
  12. Ifmonth is8𝔽, returndayWithinYear -242𝔽 -inLeapYear.
  13. Ifmonth is9𝔽, returndayWithinYear -272𝔽 -inLeapYear.
  14. Ifmonth is10𝔽, returndayWithinYear -303𝔽 -inLeapYear.
  15. Assert:month is11𝔽.
  16. ReturndayWithinYear -333𝔽 -inLeapYear.

21.4.1.13 WeekDay (t )

The abstract operation WeekDay takes argumentt (afinitetime value) and returns anintegral Number in theinclusive interval from+0𝔽 to6𝔽. It returns a Number identifying the day of the week in whicht falls. A weekday value of+0𝔽 specifies Sunday;1𝔽 specifies Monday;2𝔽 specifies Tuesday;3𝔽 specifies Wednesday;4𝔽 specifies Thursday;5𝔽 specifies Friday; and6𝔽 specifies Saturday. Note thatWeekDay(+0𝔽) =4𝔽, corresponding to Thursday, 1 January 1970. It performs the following steps when called:

  1. Return𝔽((Day(t) +4𝔽)modulo 7).

21.4.1.14 HourFromTime (t )

The abstract operation HourFromTime takes argumentt (afinitetime value) and returns anintegral Number in theinclusive interval from+0𝔽 to23𝔽. It returns the hour of the day in whicht falls. It performs the following steps when called:

  1. Return𝔽(floor((t /msPerHour))moduloHoursPerDay).

21.4.1.15 MinFromTime (t )

The abstract operation MinFromTime takes argumentt (afinitetime value) and returns anintegral Number in theinclusive interval from+0𝔽 to59𝔽. It returns the minute of the hour in whicht falls. It performs the following steps when called:

  1. Return𝔽(floor((t /msPerMinute))moduloMinutesPerHour).

21.4.1.16 SecFromTime (t )

The abstract operation SecFromTime takes argumentt (afinitetime value) and returns anintegral Number in theinclusive interval from+0𝔽 to59𝔽. It returns the second of the minute in whicht falls. It performs the following steps when called:

  1. Return𝔽(floor((t /msPerSecond))moduloSecondsPerMinute).

21.4.1.17 msFromTime (t )

The abstract operation msFromTime takes argumentt (afinitetime value) and returns anintegral Number in theinclusive interval from+0𝔽 to999𝔽. It returns the millisecond of the second in whicht falls. It performs the following steps when called:

  1. Return𝔽((t)modulo(msPerSecond)).

21.4.1.18 GetUTCEpochNanoseconds (year,month,day,hour,minute,second,millisecond,microsecond,nanosecond )

The abstract operation GetUTCEpochNanoseconds takes argumentsyear (aninteger),month (aninteger in theinclusive interval from 1 to 12),day (aninteger in theinclusive interval from 1 to 31),hour (aninteger in theinclusive interval from 0 to 23),minute (aninteger in theinclusive interval from 0 to 59),second (aninteger in theinclusive interval from 0 to 59),millisecond (aninteger in theinclusive interval from 0 to 999),microsecond (aninteger in theinclusive interval from 0 to 999), andnanosecond (aninteger in theinclusive interval from 0 to 999) and returns a BigInt. The returned value represents a number of nanoseconds since theepoch that corresponds to the given ISO 8601 calendar date and wall-clock time in UTC. It performs the following steps when called:

  1. Letdate beMakeDay(𝔽(year),𝔽(month - 1),𝔽(day)).
  2. Lettime beMakeTime(𝔽(hour),𝔽(minute),𝔽(second),𝔽(millisecond)).
  3. Letms beMakeDate(date,time).
  4. Assert:ms is anintegral Number.
  5. Return((ms) × 106 +microsecond × 103 +nanosecond).

21.4.1.19 Time Zone Identifiers

Time zones in ECMAScript are represented bytime zone identifiers, which are Strings composed entirely of code units in theinclusive interval from 0x0000 to 0x007F. Time zones supported by an ECMAScript implementation may beavailable named time zones, represented by the[[Identifier]] field of theTime Zone Identifier Records returned byAvailableNamedTimeZoneIdentifiers, oroffset time zones, represented by Strings for whichIsTimeZoneOffsetString returnstrue.

Aprimary time zone identifier is the preferred identifier for an available named time zone. Anon-primary time zone identifier is an identifier for an available named time zone that is not a primary time zone identifier. Anavailable named time zone identifier is either a primary time zone identifier or a non-primary time zone identifier. Each available named time zone identifier is associated with exactly one available named time zone. Each available named time zone is associated with exactly one primary time zone identifier and zero or more non-primary time zone identifiers.

ECMAScript implementations must support an available named time zone with the identifier"UTC", which must be the primary time zone identifier for the UTC time zone. In addition, implementations may support any number of other available named time zones.

Implementations that follow the requirements for time zones as described in the ECMA-402 Internationalization API specification are calledtime zone aware. Time zone aware implementations must support available named time zones corresponding to the Zone and Link names of the IANA Time Zone Database, and only such names. In time zone aware implementations, a primary time zone identifier is a Zone name, and a non-primary time zone identifier is a Link name, respectively, in the IANA Time Zone Database except as specifically overridden byAvailableNamedTimeZoneIdentifiers as specified in the ECMA-402 specification. Implementations that do not support the entire IANA Time Zone Database are still recommended to use IANA Time Zone Database names as identifiers to represent time zones.

21.4.1.20 GetNamedTimeZoneEpochNanoseconds (timeZoneIdentifier,year,month,day,hour,minute,second,millisecond,microsecond,nanosecond )

Theimplementation-defined abstract operation GetNamedTimeZoneEpochNanoseconds takes argumentstimeZoneIdentifier (a String),year (aninteger),month (aninteger in theinclusive interval from 1 to 12),day (aninteger in theinclusive interval from 1 to 31),hour (aninteger in theinclusive interval from 0 to 23),minute (aninteger in theinclusive interval from 0 to 59),second (aninteger in theinclusive interval from 0 to 59),millisecond (aninteger in theinclusive interval from 0 to 999),microsecond (aninteger in theinclusive interval from 0 to 999), andnanosecond (aninteger in theinclusive interval from 0 to 999) and returns aList of BigInts. Each value in the returnedList represents a number of nanoseconds since theepoch that corresponds to the given ISO 8601 calendar date and wall-clock time in the named time zone identified bytimeZoneIdentifier.

When the input represents a local time occurring more than once because of a negative time zone transition (e.g. when daylight saving time ends or the time zone offset is decreased due to a time zone rule change), the returnedList will have more than one element and will be sorted by ascending numerical value. When the input represents a local time skipped because of a positive time zone transition (e.g. when daylight saving time begins or the time zone offset is increased due to a time zone rule change), the returnedList will be empty. Otherwise, the returnedList will have one element.

The default implementation of GetNamedTimeZoneEpochNanoseconds, to be used for ECMAScript implementations that do not include local political rules for any time zones, performs the following steps when called:

  1. Assert:timeZoneIdentifier is"UTC".
  2. LetepochNanoseconds beGetUTCEpochNanoseconds(year,month,day,hour,minute,second,millisecond,microsecond,nanosecond).
  3. Return «epochNanoseconds ».
Note

It is required fortime zone aware implementations (and recommended for all others) to use the time zone information of the IANA Time Zone Databasehttps://www.iana.org/time-zones/.

1:30 AM on 5 November 2017 in America/New_York is repeated twice, so GetNamedTimeZoneEpochNanoseconds("America/New_York", 2017, 11, 5, 1, 30, 0, 0, 0, 0) would return aList of length 2 in which the first element represents 05:30 UTC (corresponding with 01:30 US Eastern Daylight Time at UTC offset -04:00) and the second element represents 06:30 UTC (corresponding with 01:30 US Eastern Standard Time at UTC offset -05:00).

2:30 AM on 12 March 2017 in America/New_York does not exist, so GetNamedTimeZoneEpochNanoseconds("America/New_York", 2017, 3, 12, 2, 30, 0, 0, 0, 0) would return an emptyList.

21.4.1.21 GetNamedTimeZoneOffsetNanoseconds (timeZoneIdentifier,epochNanoseconds )

Theimplementation-defined abstract operation GetNamedTimeZoneOffsetNanoseconds takes argumentstimeZoneIdentifier (a String) andepochNanoseconds (a BigInt) and returns aninteger.

The returnedinteger represents the offset from UTC of the named time zone identified bytimeZoneIdentifier, at the instant corresponding withepochNanoseconds relative to theepoch, both in nanoseconds.

The default implementation of GetNamedTimeZoneOffsetNanoseconds, to be used for ECMAScript implementations that do not include local political rules for any time zones, performs the following steps when called:

  1. Assert:timeZoneIdentifier is"UTC".
  2. Return 0.
Note

Time zone offset values may be positive or negative.

21.4.1.22 Time Zone Identifier Record

ATime Zone Identifier Record is aRecord used to describe anavailable named time zone identifier and its correspondingprimary time zone identifier.

Time Zone Identifier Records have the fields listed inTable 62.

Table 62:Time Zone Identifier Record Fields
Field NameValueMeaning
[[Identifier]]a StringAnavailable named time zone identifier that is supported by the implementation.
[[PrimaryIdentifier]]a StringTheprimary time zone identifier that[[Identifier]] resolves to.
Note

If[[Identifier]] is aprimary time zone identifier, then[[Identifier]] is[[PrimaryIdentifier]].

21.4.1.23 AvailableNamedTimeZoneIdentifiers ( )

Theimplementation-defined abstract operation AvailableNamedTimeZoneIdentifiers takes no arguments and returns aList ofTime Zone Identifier Records. Its result describes allavailable named time zone identifiers in this implementation, as well as theprimary time zone identifier corresponding to eachavailable named time zone identifier. TheList is ordered according to the[[Identifier]] field of eachTime Zone Identifier Record.

Time zone aware implementations, including all implementations that implement the ECMA-402 Internationalization API, must implement the AvailableNamedTimeZoneIdentifiers abstract operation as specified in the ECMA-402 specification. For implementations that are nottime zone aware, AvailableNamedTimeZoneIdentifiers performs the following steps when called:

  1. If the implementation does not include local political rules for any time zones, then
    1. Return « theTime Zone Identifier Record {[[Identifier]]:"UTC",[[PrimaryIdentifier]]:"UTC" } ».
  2. Letidentifiers be theList of uniqueavailable named time zone identifiers, sorted according tolexicographic code unit order.
  3. Letresult be a new emptyList.
  4. For each elementidentifier ofidentifiers, do
    1. Letprimary beidentifier.
    2. Ifidentifier is anon-primary time zone identifier in this implementation andidentifier is not"UTC", then
      1. Setprimary to theprimary time zone identifier associated withidentifier.
      2. NOTE: An implementation may need to resolveidentifier iteratively to obtain theprimary time zone identifier.
    3. Letrecord be theTime Zone Identifier Record {[[Identifier]]:identifier,[[PrimaryIdentifier]]:primary }.
    4. Appendrecord toresult.
  5. Assert:result contains aTime Zone Identifier Recordr such thatr.[[Identifier]] is"UTC" andr.[[PrimaryIdentifier]] is"UTC".
  6. Returnresult.

21.4.1.24 SystemTimeZoneIdentifier ( )

Theimplementation-defined abstract operation SystemTimeZoneIdentifier takes no arguments and returns a String. It returns a String representing thehost environment's current time zone, which is either a String representing a UTC offset for whichIsTimeZoneOffsetString returnstrue, or aprimary time zone identifier. It performs the following steps when called:

  1. If the implementation only supports the UTC time zone, return"UTC".
  2. LetsystemTimeZoneString be the String representing thehost environment's current time zone, either aprimary time zone identifier or anoffset time zone identifier.
  3. ReturnsystemTimeZoneString.
Note

To ensure the level of functionality that implementations commonly provide in the methods of the Date object, it is recommended that SystemTimeZoneIdentifier return an IANA time zone name corresponding to thehost environment's time zone setting, if such a thing exists.GetNamedTimeZoneEpochNanoseconds andGetNamedTimeZoneOffsetNanoseconds must reflect the local political rules for standard time and daylight saving time in that time zone, if such rules exist.

For example, if thehost environment is a browser on a system where the user has chosen US Eastern Time as their time zone, SystemTimeZoneIdentifier returns"America/New_York".

21.4.1.25 LocalTime (t )

The abstract operation LocalTime takes argumentt (afinitetime value) and returns anintegral Number. It convertst from UTC to local time. The local political rules for standard time and daylight saving time in effect att should be used to determine the result in the way specified in this section. It performs the following steps when called:

  1. LetsystemTimeZoneIdentifier beSystemTimeZoneIdentifier().
  2. IfIsTimeZoneOffsetString(systemTimeZoneIdentifier) istrue, then
    1. LetoffsetNs beParseTimeZoneOffsetString(systemTimeZoneIdentifier).
  3. Else,
    1. LetoffsetNs beGetNamedTimeZoneOffsetNanoseconds(systemTimeZoneIdentifier,((t) × 106)).
  4. LetoffsetMs betruncate(offsetNs / 106).
  5. Returnt +𝔽(offsetMs).
Note 1

If political rules for the local timet are not available within the implementation, the result ist becauseSystemTimeZoneIdentifier returns"UTC" andGetNamedTimeZoneOffsetNanoseconds returns 0.

Note 2

It is required fortime zone aware implementations (and recommended for all others) to use the time zone information of the IANA Time Zone Databasehttps://www.iana.org/time-zones/.

Note 3

Two different inputtime valuestUTC are converted to the same local timetlocal at a negative time zone transition when there are repeated times (e.g. the daylight saving time ends or the time zone adjustment is decreased.).

LocalTime(UTC(tlocal)) is not necessarily always equal totlocal. Correspondingly,UTC(LocalTime(tUTC)) is not necessarily always equal totUTC.

21.4.1.26 UTC (t )

The abstract operation UTC takes argumentt (a Number) and returns atime value. It convertst from local time to a UTCtime value. The local political rules for standard time and daylight saving time in effect att should be used to determine the result in the way specified in this section. It performs the following steps when called:

  1. Ift is notfinite, returnNaN.
  2. LetsystemTimeZoneIdentifier beSystemTimeZoneIdentifier().
  3. IfIsTimeZoneOffsetString(systemTimeZoneIdentifier) istrue, then
    1. LetoffsetNs beParseTimeZoneOffsetString(systemTimeZoneIdentifier).
  4. Else,
    1. LetpossibleInstants beGetNamedTimeZoneEpochNanoseconds(systemTimeZoneIdentifier,(YearFromTime(t)),(MonthFromTime(t)) + 1,(DateFromTime(t)),(HourFromTime(t)),(MinFromTime(t)),(SecFromTime(t)),(msFromTime(t)), 0, 0).
    2. NOTE: The following steps ensure that whent represents local time repeating multiple times at a negative time zone transition (e.g. when the daylight saving time ends or the time zone offset is decreased due to a time zone rule change) or skipped local time at a positive time zone transition (e.g. when the daylight saving time starts or the time zone offset is increased due to a time zone rule change),t is interpreted using the time zone offset before the transition.
    3. IfpossibleInstants is not empty, then
      1. LetdisambiguatedInstant bepossibleInstants[0].
    4. Else,
      1. NOTE:t represents a local time skipped at a positive time zone transition (e.g. due to daylight saving time starting or a time zone rule change increasing the UTC offset).
      2. LetpossibleInstantsBefore beGetNamedTimeZoneEpochNanoseconds(systemTimeZoneIdentifier,(YearFromTime(tBefore)),(MonthFromTime(tBefore)) + 1,(DateFromTime(tBefore)),(HourFromTime(tBefore)),(MinFromTime(tBefore)),(SecFromTime(tBefore)),(msFromTime(tBefore)), 0, 0), wheretBefore is the largestintegral Number <t for whichpossibleInstantsBefore is not empty (i.e.,tBefore represents the last local time before the transition).
      3. LetdisambiguatedInstant be the last element ofpossibleInstantsBefore.
    5. LetoffsetNs beGetNamedTimeZoneOffsetNanoseconds(systemTimeZoneIdentifier,disambiguatedInstant).
  5. LetoffsetMs betruncate(offsetNs / 106).
  6. Returnt -𝔽(offsetMs).

Inputt is nominally atime value but may be any Number value. The algorithm must not limitt to thetime value range, so that inputs corresponding with a boundary of thetime value range can be supported regardless of local UTC offset. For example, the maximumtime value is 8.64 × 1015, corresponding with"+275760-09-13T00:00:00Z". In an environment where the local time zone offset is ahead of UTC by 1 hour at that instant, it is represented by the larger input of 8.64 × 1015 + 3.6 × 106, corresponding with"+275760-09-13T01:00:00+01:00".

If political rules for the local timet are not available within the implementation, the result ist becauseSystemTimeZoneIdentifier returns"UTC" andGetNamedTimeZoneOffsetNanoseconds returns 0.

Note 1

It is required fortime zone aware implementations (and recommended for all others) to use the time zone information of the IANA Time Zone Databasehttps://www.iana.org/time-zones/.

1:30 AM on 5 November 2017 in America/New_York is repeated twice (fall backward), but it must be interpreted as 1:30 AM UTC-04 instead of 1:30 AM UTC-05. In UTC(TimeClip(MakeDate(MakeDay(2017, 10, 5),MakeTime(1, 30, 0, 0)))), the value ofoffsetMs is-4 ×msPerHour.

2:30 AM on 12 March 2017 in America/New_York does not exist, but it must be interpreted as 2:30 AM UTC-05 (equivalent to 3:30 AM UTC-04). In UTC(TimeClip(MakeDate(MakeDay(2017, 2, 12),MakeTime(2, 30, 0, 0)))), the value ofoffsetMs is-5 ×msPerHour.

Note 2

UTC(LocalTime(tUTC)) is not necessarily always equal totUTC. Correspondingly,LocalTime(UTC(tlocal)) is not necessarily always equal totlocal.

21.4.1.27 MakeTime (hour,min,sec,ms )

The abstract operation MakeTime takes argumentshour (a Number),min (a Number),sec (a Number), andms (a Number) and returns a Number. It calculates a number of milliseconds. It performs the following steps when called:

  1. Ifhour is notfinite,min is notfinite,sec is notfinite, orms is notfinite, returnNaN.
  2. Leth be𝔽(!ToIntegerOrInfinity(hour)).
  3. Letm be𝔽(!ToIntegerOrInfinity(min)).
  4. Lets be𝔽(!ToIntegerOrInfinity(sec)).
  5. Letmilli be𝔽(!ToIntegerOrInfinity(ms)).
  6. Return ((h ×msPerHour +m ×msPerMinute) +s ×msPerSecond) +milli.
Note

The arithmetic in MakeTime is floating-point arithmetic, which is not associative, so the operations must be performed in the correct order.

21.4.1.28 MakeDay (year,month,date )

The abstract operation MakeDay takes argumentsyear (a Number),month (a Number), anddate (a Number) and returns a Number. It calculates a number of days. It performs the following steps when called:

  1. Ifyear is notfinite,month is notfinite, ordate is notfinite, returnNaN.
  2. Lety be𝔽(!ToIntegerOrInfinity(year)).
  3. Letm be𝔽(!ToIntegerOrInfinity(month)).
  4. Letdt be𝔽(!ToIntegerOrInfinity(date)).
  5. Letym bey +𝔽(floor((m) / 12)).
  6. Ifym is notfinite, returnNaN.
  7. Letmn be𝔽((m)modulo 12).
  8. Find afinitetime valuet such thatYearFromTime(t) isym,MonthFromTime(t) ismn, andDateFromTime(t) is1𝔽; but if this is not possible (because some argument is out of range), returnNaN.
  9. ReturnDay(t) +dt -1𝔽.

21.4.1.29 MakeDate (day,time )

The abstract operation MakeDate takes argumentsday (a Number) andtime (a Number) and returns a Number. It calculates a number of milliseconds. It performs the following steps when called:

  1. Ifday is notfinite ortime is notfinite, returnNaN.
  2. Lettv beday ×msPerDay +time.
  3. Iftv is notfinite, returnNaN.
  4. Returntv.

21.4.1.30 MakeFullYear (year )

The abstract operation MakeFullYear takes argumentyear (a Number) and returns anintegral Number orNaN. It returns the full year associated with theinteger part ofyear, interpreting any value in theinclusive interval from 0 to 99 as a count of years since the start of 1900. For alignment with the proleptic Gregorian calendar, "full year" is defined as the signed count of complete years since the start of year 0 (1 B.C.). It performs the following steps when called:

  1. Ifyear isNaN, returnNaN.
  2. Lettruncated be ! ToIntegerOrInfinity(year).
  3. Iftruncated is in theinclusive interval from 0 to 99, return1900𝔽 +𝔽(truncated).
  4. Return𝔽(truncated).

21.4.1.31 TimeClip (time )

The abstract operation TimeClip takes argumenttime (a Number) and returns a Number. It calculates a number of milliseconds. It performs the following steps when called:

  1. Iftime is notfinite, returnNaN.
  2. Ifabs((time)) > 8.64 × 1015, returnNaN.
  3. Return𝔽(!ToIntegerOrInfinity(time)).

21.4.1.32 Date Time String Format

ECMAScript defines a string interchange format for date-times based upon a simplification of the ISO 8601 calendar date extended format. The format is as follows:YYYY-MM-DDTHH:mm:ss.sssZ

Where the elements are as follows:

YYYY is the year in the proleptic Gregorian calendar as four decimal digits from 0000 to 9999, or as anexpanded year of"+" or"-" followed by six decimal digits.
-"-" (hyphen) appears literally twice in the string.
MM is the month of the year as two decimal digits from 01 (January) to 12 (December).
DD is the day of the month as two decimal digits from 01 to 31.
T"T" appears literally in the string, to indicate the beginning of the time element.
HH is the number of complete hours that have passed since midnight as two decimal digits from 00 to 24.
:":" (colon) appears literally twice in the string.
mm is the number of complete minutes since the start of the hour as two decimal digits from 00 to 59.
ss is the number of complete seconds since the start of the minute as two decimal digits from 00 to 59.
."." (dot) appears literally in the string.
sss is the number of complete milliseconds since the start of the second as three decimal digits.
Z is the UTC offset representation specified as"Z" (for UTC with no offset) or as either"+" or"-" followed by a time expressionHH:mm (a subset of thetime zone offset string format for indicating local time ahead of or behind UTC, respectively)

This format includes date-only forms:

YYYYYYYY-MMYYYY-MM-DD

It also includes “date-time” forms that consist of one of the above date-only forms immediately followed by one of the following time forms with an optional UTC offset representation appended:

THH:mmTHH:mm:ssTHH:mm:ss.sss

A string containing out-of-bounds or nonconforming elements is not a valid instance of this format.

Note 1

As every day both starts and ends with midnight, the two notations00:00 and24:00 are available to distinguish the two midnights that can be associated with one date. This means that the following two notations refer to exactly the same point in time:1995-02-04T24:00 and1995-02-05T00:00. This interpretation of the latter form as "end of a calendar day" is consistent with ISO 8601, even though that specification reserves it for describing time intervals and does not permit it within representations of single points in time.

Note 2

There exists no international standard that specifies abbreviations for civil time zones like CET, EST, etc. and sometimes the same abbreviation is even used for two very different time zones. For this reason, both ISO 8601 and this format specify numeric representations of time zone offsets.

21.4.1.32.1 Expanded Years

Covering the fulltime value range of approximately 273,790 years forward or backward from 1 January 1970 (21.4.1.1) requires representing years before 0 or after 9999. ISO 8601 permits expansion of the year representation, but only by mutual agreement of the partners in information interchange. In the simplified ECMAScript format, such an expanded year representation shall have 6 digits and is always prefixed with a + or - sign. The year 0 is considered positive and must be prefixed with a + sign. The representation of the year 0 as -000000 is invalid. Strings matching theDate Time String Format with expanded years representing instants in time outside the range of atime value are treated as unrecognizable byDate.parse and cause that function to returnNaN without falling back to implementation-specific behaviour or heuristics.

Note

Examples of date-time values with expanded years:

-271821-04-20T00:00:00Z271822 B.C.
-000001-01-01T00:00:00Z2 B.C.
+000000-01-01T00:00:00Z1 B.C.
+000001-01-01T00:00:00Z1 A.D.
+001970-01-01T00:00:00Z1970 A.D.
+002009-12-15T00:00:00Z2009 A.D.
+275760-09-13T00:00:00Z275760 A.D.

21.4.1.33 Time Zone Offset String Format

ECMAScript defines a string interchange format for UTC offsets, derived from ISO 8601. The format is described by the following grammar.

Syntax

UTCOffset:::ASCIISignHourASCIISignHourHourSubcomponents[+Extended]ASCIISignHourHourSubcomponents[~Extended]ASCIISign:::one of+-Hour:::0DecimalDigit1DecimalDigit20212223HourSubcomponents[Extended]:::TimeSeparator[?Extended]MinuteSecondTimeSeparator[?Extended]MinuteSecondTimeSeparator[?Extended]MinuteSecondTemporalDecimalFractionoptTimeSeparator[Extended]:::[+Extended]:[~Extended][empty]MinuteSecond:::0DecimalDigit1DecimalDigit2DecimalDigit3DecimalDigit4DecimalDigit5DecimalDigitTemporalDecimalFraction:::TemporalDecimalSeparatorDecimalDigitTemporalDecimalSeparatorDecimalDigitDecimalDigitTemporalDecimalSeparatorDecimalDigitDecimalDigitDecimalDigitTemporalDecimalSeparatorDecimalDigitDecimalDigitDecimalDigitDecimalDigitTemporalDecimalSeparatorDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitTemporalDecimalSeparatorDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitTemporalDecimalSeparatorDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitTemporalDecimalSeparatorDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitTemporalDecimalSeparatorDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitDecimalDigitTemporalDecimalSeparator:::one of.,

21.4.1.33.1 IsTimeZoneOffsetString (offsetString )

The abstract operation IsTimeZoneOffsetString takes argumentoffsetString (a String) and returns a Boolean. The return value indicates whetheroffsetString conforms to the grammar given byUTCOffset. It performs the following steps when called:

  1. LetparseResult beParseText(offsetString,UTCOffset).
  2. IfparseResult is aList of errors, returnfalse.
  3. Returntrue.

21.4.1.33.2 ParseTimeZoneOffsetString (offsetString )

The abstract operation ParseTimeZoneOffsetString takes argumentoffsetString (a String) and returns aninteger. The return value is the UTC offset, as a number of nanoseconds, that corresponds to the StringoffsetString. It performs the following steps when called:

  1. LetparseResult beParseText(offsetString,UTCOffset).
  2. Assert:parseResult is not aList of errors.
  3. Assert:parseResult contains aASCIISignParse Node.
  4. LetparsedSign be thesource text matched by theASCIISignParse Node contained withinparseResult.
  5. IfparsedSign is the single code point U+002D (HYPHEN-MINUS), then
    1. Letsign be -1.
  6. Else,
    1. Letsign be 1.
  7. NOTE: Applications ofStringToNumber below do not lose precision, since each of the parsed values is guaranteed to be a sufficiently short string of decimal digits.
  8. Assert:parseResult contains anHourParse Node.
  9. LetparsedHours be thesource text matched by theHourParse Node contained withinparseResult.
  10. Lethours be(StringToNumber(CodePointsToString(parsedHours))).
  11. IfparseResult does not contain aMinuteSecondParse Node, then
    1. Letminutes be 0.
  12. Else,
    1. LetparsedMinutes be thesource text matched by the firstMinuteSecondParse Node contained withinparseResult.
    2. Letminutes be(StringToNumber(CodePointsToString(parsedMinutes))).
  13. IfparseResult does not contain twoMinuteSecondParse Nodes, then
    1. Letseconds be 0.
  14. Else,
    1. LetparsedSeconds be thesource text matched by the secondMinuteSecondParse Node contained withinparseResult.
    2. Letseconds be(StringToNumber(CodePointsToString(parsedSeconds))).
  15. IfparseResult does not contain aTemporalDecimalFractionParse Node, then
    1. Letnanoseconds be 0.
  16. Else,
    1. LetparsedFraction be thesource text matched by theTemporalDecimalFractionParse Node contained withinparseResult.
    2. Letfraction be thestring-concatenation ofCodePointsToString(parsedFraction) and"000000000".
    3. LetnanosecondsString be thesubstring offraction from 1 to 10.
    4. Letnanoseconds be(StringToNumber(nanosecondsString)).
  17. Returnsign × (((hours × 60 +minutes) × 60 +seconds) × 109 +nanoseconds).

21.4.2 The Date Constructor

The Dateconstructor:

  • is%Date%.
  • is the initial value of the"Date" property of theglobal object.
  • creates and initializes a new Date when called as aconstructor.
  • returns a String representing the current time (UTC) when called as a function rather than as aconstructor.
  • is a function whose behaviour differs based upon the number and types of its arguments.
  • may be used as the value of anextends clause of a class definition. Subclassconstructors that intend to inherit the specified Date behaviour must include asuper call to the Dateconstructor to create and initialize the subclass instance with a[[DateValue]] internal slot.

21.4.2.1 Date ( ...values )

This function performs the following steps when called:

  1. If NewTarget isundefined, then
    1. Letnow be thetime value (UTC) identifying the current time.
    2. ReturnToDateString(now).
  2. LetnumberOfArgs be the number of elements invalues.
  3. IfnumberOfArgs = 0, then
    1. Letdv be thetime value (UTC) identifying the current time.
  4. Else ifnumberOfArgs = 1, then
    1. Letvalue bevalues[0].
    2. Ifvalueis an Object andvalue has a[[DateValue]] internal slot, then
      1. Lettv bevalue.[[DateValue]].
    3. Else,
      1. Letv be ? ToPrimitive(value).
      2. Ifvis a String, then
        1. Assert: The next step never returns anabrupt completion becausevis a String.
        2. Lettv be the result of parsingv as a date, in exactly the same manner as for theparse method (21.4.3.2).
      3. Else,
        1. Lettv be ? ToNumber(v).
    4. Letdv beTimeClip(tv).
  5. Else,
    1. Assert:numberOfArgs ≥ 2.
    2. Lety be ? ToNumber(values[0]).
    3. Letm be ? ToNumber(values[1]).
    4. IfnumberOfArgs > 2, letdt be ? ToNumber(values[2]); else letdt be1𝔽.
    5. IfnumberOfArgs > 3, leth be ? ToNumber(values[3]); else leth be+0𝔽.
    6. IfnumberOfArgs > 4, letmin be ? ToNumber(values[4]); else letmin be+0𝔽.
    7. IfnumberOfArgs > 5, lets be ? ToNumber(values[5]); else lets be+0𝔽.
    8. IfnumberOfArgs > 6, letmilli be ? ToNumber(values[6]); else letmilli be+0𝔽.
    9. Letyr beMakeFullYear(y).
    10. LetfinalDate beMakeDate(MakeDay(yr,m,dt),MakeTime(h,min,s,milli)).
    11. Letdv beTimeClip(UTC(finalDate)).
  6. LetO be ? OrdinaryCreateFromConstructor(NewTarget,"%Date.prototype%", «[[DateValue]] »).
  7. SetO.[[DateValue]] todv.
  8. ReturnO.

21.4.3 Properties of the Date Constructor

The Dateconstructor:

  • has a[[Prototype]] internal slot whose value is%Function.prototype%.
  • has a"length" property whose value is7𝔽.
  • has the following properties:

21.4.3.1 Date.now ( )

This function returns thetime value designating the UTC date and time of the occurrence of the call to it.

21.4.3.2 Date.parse (string )

This function applies theToString operator to its argument. IfToString results in anabrupt completion theCompletion Record is immediately returned. Otherwise, this function interprets the resulting String as a date and time; it returns a Number, the UTCtime value corresponding to the date and time. The String may be interpreted as a local time, a UTC time, or a time in some other time zone, depending on the contents of the String. The function first attempts to parse the String according to the format described in Date Time String Format (21.4.1.32), including expanded years. If the String does not conform to that format the function may fall back to any implementation-specific heuristics or implementation-specific date formats. Strings that are unrecognizable or contain out-of-bounds format element values shall cause this function to returnNaN.

If the String conforms to theDate Time String Format, substitute values take the place of absent format elements. When theMM orDD elements are absent,"01" is used. When theHH,mm, orss elements are absent,"00" is used. When thesss element is absent,"000" is used. When the UTC offset representation is absent, date-only forms are interpreted as a UTC time and date-time forms are interpreted as a local time.

Ifx is any Date whose milliseconds amount is zero within a particular implementation of ECMAScript, then all of the following expressions should produce the same numeric value in that implementation, if all the properties referenced have their initial values:

x.valueOf()Date.parse(x.toString())Date.parse(x.toUTCString())Date.parse(x.toISOString())

However, the expression

Date.parse(x.toLocaleString())

is not required to produce the same Number value as the preceding three expressions and, in general, the value produced by this function isimplementation-defined when given any String value that does not conform to the Date Time String Format (21.4.1.32) and that could not be produced in that implementation by thetoString ortoUTCString method.

21.4.3.3 Date.prototype

The initial value ofDate.prototype is theDate prototype object.

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false }.

21.4.3.4 Date.UTC (year [ ,month [ ,date [ ,hours [ ,minutes [ ,seconds [ ,ms ] ] ] ] ] ] )

This function performs the following steps when called:

  1. Lety be ? ToNumber(year).
  2. Ifmonth is present, letm be ? ToNumber(month); else letm be+0𝔽.
  3. Ifdate is present, letdt be ? ToNumber(date); else letdt be1𝔽.
  4. Ifhours is present, leth be ? ToNumber(hours); else leth be+0𝔽.
  5. Ifminutes is present, letmin be ? ToNumber(minutes); else letmin be+0𝔽.
  6. Ifseconds is present, lets be ? ToNumber(seconds); else lets be+0𝔽.
  7. Ifms is present, letmilli be ? ToNumber(ms); else letmilli be+0𝔽.
  8. Letyr beMakeFullYear(y).
  9. ReturnTimeClip(MakeDate(MakeDay(yr,m,dt),MakeTime(h,min,s,milli))).

The"length" property of this function is7𝔽.

Note

This function differs from the Dateconstructor in two ways: it returns atime value as a Number, rather than creating a Date, and it interprets the arguments in UTC rather than as local time.

21.4.4 Properties of the Date Prototype Object

TheDate prototype object:

  • is%Date.prototype%.
  • is itself anordinary object.
  • is not a Date instance and does not have a[[DateValue]] internal slot.
  • has a[[Prototype]] internal slot whose value is%Object.prototype%.

Unless explicitly defined otherwise, the methods of the Date prototype object defined below are not generic and thethis value passed to them must be an object that has a[[DateValue]] internal slot that has been initialized to atime value.

21.4.4.1 Date.prototype.constructor

The initial value ofDate.prototype.constructor is%Date%.

21.4.4.2 Date.prototype.getDate ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnDateFromTime(LocalTime(t)).

21.4.4.3 Date.prototype.getDay ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnWeekDay(LocalTime(t)).

21.4.4.4 Date.prototype.getFullYear ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnYearFromTime(LocalTime(t)).

21.4.4.5 Date.prototype.getHours ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnHourFromTime(LocalTime(t)).

21.4.4.6 Date.prototype.getMilliseconds ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnmsFromTime(LocalTime(t)).

21.4.4.7 Date.prototype.getMinutes ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnMinFromTime(LocalTime(t)).

21.4.4.8 Date.prototype.getMonth ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnMonthFromTime(LocalTime(t)).

21.4.4.9 Date.prototype.getSeconds ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnSecFromTime(LocalTime(t)).

21.4.4.10 Date.prototype.getTime ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. ReturndateObject.[[DateValue]].

21.4.4.11 Date.prototype.getTimezoneOffset ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. Return (t -LocalTime(t)) /msPerMinute.

21.4.4.12 Date.prototype.getUTCDate ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnDateFromTime(t).

21.4.4.13 Date.prototype.getUTCDay ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnWeekDay(t).

21.4.4.14 Date.prototype.getUTCFullYear ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnYearFromTime(t).

21.4.4.15 Date.prototype.getUTCHours ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnHourFromTime(t).

21.4.4.16 Date.prototype.getUTCMilliseconds ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnmsFromTime(t).

21.4.4.17 Date.prototype.getUTCMinutes ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnMinFromTime(t).

21.4.4.18 Date.prototype.getUTCMonth ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnMonthFromTime(t).

21.4.4.19 Date.prototype.getUTCSeconds ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, returnNaN.
  5. ReturnSecFromTime(t).

21.4.4.20 Date.prototype.setDate (date )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Letdt be ? ToNumber(date).
  5. Ift isNaN, returnNaN.
  6. Sett toLocalTime(t).
  7. LetnewDate beMakeDate(MakeDay(YearFromTime(t),MonthFromTime(t),dt),TimeWithinDay(t)).
  8. Letu beTimeClip(UTC(newDate)).
  9. SetdateObject.[[DateValue]] tou.
  10. Returnu.

21.4.4.21 Date.prototype.setFullYear (year [ ,month [ ,date ] ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Lety be ? ToNumber(year).
  5. Ift isNaN, sett to+0𝔽; otherwise sett toLocalTime(t).
  6. Ifmonth is not present, letm beMonthFromTime(t); otherwise letm be ? ToNumber(month).
  7. Ifdate is not present, letdt beDateFromTime(t); otherwise letdt be ? ToNumber(date).
  8. LetnewDate beMakeDate(MakeDay(y,m,dt),TimeWithinDay(t)).
  9. Letu beTimeClip(UTC(newDate)).
  10. SetdateObject.[[DateValue]] tou.
  11. Returnu.

The"length" property of this method is3𝔽.

Note

Ifmonth is not present, this method behaves as ifmonth was present with the valuegetMonth(). Ifdate is not present, it behaves as ifdate was present with the valuegetDate().

21.4.4.22 Date.prototype.setHours (hour [ ,min [ ,sec [ ,ms ] ] ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Leth be ? ToNumber(hour).
  5. Ifmin is present, letm be ? ToNumber(min).
  6. Ifsec is present, lets be ? ToNumber(sec).
  7. Ifms is present, letmilli be ? ToNumber(ms).
  8. Ift isNaN, returnNaN.
  9. Sett toLocalTime(t).
  10. Ifmin is not present, letm beMinFromTime(t).
  11. Ifsec is not present, lets beSecFromTime(t).
  12. Ifms is not present, letmilli bemsFromTime(t).
  13. Letdate beMakeDate(Day(t),MakeTime(h,m,s,milli)).
  14. Letu beTimeClip(UTC(date)).
  15. SetdateObject.[[DateValue]] tou.
  16. Returnu.

The"length" property of this method is4𝔽.

Note

Ifmin is not present, this method behaves as ifmin was present with the valuegetMinutes(). Ifsec is not present, it behaves as ifsec was present with the valuegetSeconds(). Ifms is not present, it behaves as ifms was present with the valuegetMilliseconds().

21.4.4.23 Date.prototype.setMilliseconds (ms )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Setms to ? ToNumber(ms).
  5. Ift isNaN, returnNaN.
  6. Sett toLocalTime(t).
  7. Lettime beMakeTime(HourFromTime(t),MinFromTime(t),SecFromTime(t),ms).
  8. Letu beTimeClip(UTC(MakeDate(Day(t),time))).
  9. SetdateObject.[[DateValue]] tou.
  10. Returnu.

21.4.4.24 Date.prototype.setMinutes (min [ ,sec [ ,ms ] ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Letm be ? ToNumber(min).
  5. Ifsec is present, lets be ? ToNumber(sec).
  6. Ifms is present, letmilli be ? ToNumber(ms).
  7. Ift isNaN, returnNaN.
  8. Sett toLocalTime(t).
  9. Ifsec is not present, lets beSecFromTime(t).
  10. Ifms is not present, letmilli bemsFromTime(t).
  11. Letdate beMakeDate(Day(t),MakeTime(HourFromTime(t),m,s,milli)).
  12. Letu beTimeClip(UTC(date)).
  13. SetdateObject.[[DateValue]] tou.
  14. Returnu.

The"length" property of this method is3𝔽.

Note

Ifsec is not present, this method behaves as ifsec was present with the valuegetSeconds(). Ifms is not present, this behaves as ifms was present with the valuegetMilliseconds().

21.4.4.25 Date.prototype.setMonth (month [ ,date ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Letm be ? ToNumber(month).
  5. Ifdate is present, letdt be ? ToNumber(date).
  6. Ift isNaN, returnNaN.
  7. Sett toLocalTime(t).
  8. Ifdate is not present, letdt beDateFromTime(t).
  9. LetnewDate beMakeDate(MakeDay(YearFromTime(t),m,dt),TimeWithinDay(t)).
  10. Letu beTimeClip(UTC(newDate)).
  11. SetdateObject.[[DateValue]] tou.
  12. Returnu.

The"length" property of this method is2𝔽.

Note

Ifdate is not present, this method behaves as ifdate was present with the valuegetDate().

21.4.4.26 Date.prototype.setSeconds (sec [ ,ms ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Lets be ? ToNumber(sec).
  5. Ifms is present, letmilli be ? ToNumber(ms).
  6. Ift isNaN, returnNaN.
  7. Sett toLocalTime(t).
  8. Ifms is not present, letmilli bemsFromTime(t).
  9. Letdate beMakeDate(Day(t),MakeTime(HourFromTime(t),MinFromTime(t),s,milli)).
  10. Letu beTimeClip(UTC(date)).
  11. SetdateObject.[[DateValue]] tou.
  12. Returnu.

The"length" property of this method is2𝔽.

Note

Ifms is not present, this method behaves as ifms was present with the valuegetMilliseconds().

21.4.4.27 Date.prototype.setTime (time )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett be ? ToNumber(time).
  4. Letv beTimeClip(t).
  5. SetdateObject.[[DateValue]] tov.
  6. Returnv.

21.4.4.28 Date.prototype.setUTCDate (date )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Letdt be ? ToNumber(date).
  5. Ift isNaN, returnNaN.
  6. LetnewDate beMakeDate(MakeDay(YearFromTime(t),MonthFromTime(t),dt),TimeWithinDay(t)).
  7. Letv beTimeClip(newDate).
  8. SetdateObject.[[DateValue]] tov.
  9. Returnv.

21.4.4.29 Date.prototype.setUTCFullYear (year [ ,month [ ,date ] ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Ift isNaN, sett to+0𝔽.
  5. Lety be ? ToNumber(year).
  6. Ifmonth is not present, letm beMonthFromTime(t); otherwise letm be ? ToNumber(month).
  7. Ifdate is not present, letdt beDateFromTime(t); otherwise letdt be ? ToNumber(date).
  8. LetnewDate beMakeDate(MakeDay(y,m,dt),TimeWithinDay(t)).
  9. Letv beTimeClip(newDate).
  10. SetdateObject.[[DateValue]] tov.
  11. Returnv.

The"length" property of this method is3𝔽.

Note

Ifmonth is not present, this method behaves as ifmonth was present with the valuegetUTCMonth(). Ifdate is not present, it behaves as ifdate was present with the valuegetUTCDate().

21.4.4.30 Date.prototype.setUTCHours (hour [ ,min [ ,sec [ ,ms ] ] ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Leth be ? ToNumber(hour).
  5. Ifmin is present, letm be ? ToNumber(min).
  6. Ifsec is present, lets be ? ToNumber(sec).
  7. Ifms is present, letmilli be ? ToNumber(ms).
  8. Ift isNaN, returnNaN.
  9. Ifmin is not present, letm beMinFromTime(t).
  10. Ifsec is not present, lets beSecFromTime(t).
  11. Ifms is not present, letmilli bemsFromTime(t).
  12. Letdate beMakeDate(Day(t),MakeTime(h,m,s,milli)).
  13. Letv beTimeClip(date).
  14. SetdateObject.[[DateValue]] tov.
  15. Returnv.

The"length" property of this method is4𝔽.

Note

Ifmin is not present, this method behaves as ifmin was present with the valuegetUTCMinutes(). Ifsec is not present, it behaves as ifsec was present with the valuegetUTCSeconds(). Ifms is not present, it behaves as ifms was present with the valuegetUTCMilliseconds().

21.4.4.31 Date.prototype.setUTCMilliseconds (ms )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Setms to ? ToNumber(ms).
  5. Ift isNaN, returnNaN.
  6. Lettime beMakeTime(HourFromTime(t),MinFromTime(t),SecFromTime(t),ms).
  7. Letv beTimeClip(MakeDate(Day(t),time)).
  8. SetdateObject.[[DateValue]] tov.
  9. Returnv.

21.4.4.32 Date.prototype.setUTCMinutes (min [ ,sec [ ,ms ] ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Letm be ? ToNumber(min).
  5. Ifsec is present, lets be ? ToNumber(sec).
  6. Ifms is present, letmilli be ? ToNumber(ms).
  7. Ift isNaN, returnNaN.
  8. Ifsec is not present, lets beSecFromTime(t).
  9. Ifms is not present, letmilli bemsFromTime(t).
  10. Letdate beMakeDate(Day(t),MakeTime(HourFromTime(t),m,s,milli)).
  11. Letv beTimeClip(date).
  12. SetdateObject.[[DateValue]] tov.
  13. Returnv.

The"length" property of this method is3𝔽.

Note

Ifsec is not present, this method behaves as ifsec was present with the valuegetUTCSeconds(). Ifms is not present, it behaves as ifms was present with the value return bygetUTCMilliseconds().

21.4.4.33 Date.prototype.setUTCMonth (month [ ,date ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Letm be ? ToNumber(month).
  5. Ifdate is present, letdt be ? ToNumber(date).
  6. Ift isNaN, returnNaN.
  7. Ifdate is not present, letdt beDateFromTime(t).
  8. LetnewDate beMakeDate(MakeDay(YearFromTime(t),m,dt),TimeWithinDay(t)).
  9. Letv beTimeClip(newDate).
  10. SetdateObject.[[DateValue]] tov.
  11. Returnv.

The"length" property of this method is2𝔽.

Note

Ifdate is not present, this method behaves as ifdate was present with the valuegetUTCDate().

21.4.4.34 Date.prototype.setUTCSeconds (sec [ ,ms ] )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lett bedateObject.[[DateValue]].
  4. Lets be ? ToNumber(sec).
  5. Ifms is present, letmilli be ? ToNumber(ms).
  6. Ift isNaN, returnNaN.
  7. Ifms is not present, letmilli bemsFromTime(t).
  8. Letdate beMakeDate(Day(t),MakeTime(HourFromTime(t),MinFromTime(t),s,milli)).
  9. Letv beTimeClip(date).
  10. SetdateObject.[[DateValue]] tov.
  11. Returnv.

The"length" property of this method is2𝔽.

Note

Ifms is not present, this method behaves as ifms was present with the valuegetUTCMilliseconds().

21.4.4.35 Date.prototype.toDateString ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lettv bedateObject.[[DateValue]].
  4. Iftv isNaN, return"Invalid Date".
  5. Lett beLocalTime(tv).
  6. ReturnDateString(t).

21.4.4.36 Date.prototype.toISOString ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lettv bedateObject.[[DateValue]].
  4. Iftv isNaN, throw aRangeError exception.
  5. Assert:tv is anintegral Number.
  6. Iftv corresponds with a year that cannot be represented in theDate Time String Format, throw aRangeError exception.
  7. Return a String representation oftv in theDate Time String Format on the UTC time scale, including all format elements and the UTC offset representation"Z".

21.4.4.37 Date.prototype.toJSON (key )

This method provides a String representation of a Date for use byJSON.stringify (25.5.2).

It performs the following steps when called:

  1. LetO be ? ToObject(this value).
  2. Lettv be ? ToPrimitive(O,number).
  3. Iftvis a Number andtv is notfinite, returnnull.
  4. Return ? Invoke(O,"toISOString").
Note 1

The argument is ignored.

Note 2

This method is intentionally generic; it does not require that itsthis value be a Date. Therefore, it can be transferred to other kinds of objects for use as a method. However, it does require that any such object have atoISOString method.

21.4.4.38 Date.prototype.toLocaleDateString ( [reserved1 [ ,reserved2 ] ] )

An ECMAScript implementation that includes the ECMA-402 Internationalization API must implement this method as specified in the ECMA-402 specification. If an ECMAScript implementation does not include the ECMA-402 API the following specification of this method is used:

This method returns a String value. The contents of the String areimplementation-defined, but are intended to represent the “date” portion of the Date in the current time zone in a convenient, human-readable form that corresponds to the conventions of thehost environment's current locale.

The meaning of the optional parameters to this method are defined in the ECMA-402 specification; implementations that do not include ECMA-402 support must not use those parameter positions for anything else.

21.4.4.39 Date.prototype.toLocaleString ( [reserved1 [ ,reserved2 ] ] )

An ECMAScript implementation that includes the ECMA-402 Internationalization API must implement this method as specified in the ECMA-402 specification. If an ECMAScript implementation does not include the ECMA-402 API the following specification of this method is used:

This method returns a String value. The contents of the String areimplementation-defined, but are intended to represent the Date in the current time zone in a convenient, human-readable form that corresponds to the conventions of thehost environment's current locale.

The meaning of the optional parameters to this method are defined in the ECMA-402 specification; implementations that do not include ECMA-402 support must not use those parameter positions for anything else.

21.4.4.40 Date.prototype.toLocaleTimeString ( [reserved1 [ ,reserved2 ] ] )

An ECMAScript implementation that includes the ECMA-402 Internationalization API must implement this method as specified in the ECMA-402 specification. If an ECMAScript implementation does not include the ECMA-402 API the following specification of this method is used:

This method returns a String value. The contents of the String areimplementation-defined, but are intended to represent the “time” portion of the Date in the current time zone in a convenient, human-readable form that corresponds to the conventions of thehost environment's current locale.

The meaning of the optional parameters to this method are defined in the ECMA-402 specification; implementations that do not include ECMA-402 support must not use those parameter positions for anything else.

21.4.4.41 Date.prototype.toString ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lettv bedateObject.[[DateValue]].
  4. ReturnToDateString(tv).
Note 1

For any Dated such thatd.[[DateValue]] is evenly divisible by 1000, the result ofDate.parse(d.toString()) =d.valueOf(). See21.4.3.2.

Note 2

This method is not generic; it throws aTypeError exception if itsthis value is not a Date. Therefore, it cannot be transferred to other kinds of objects for use as a method.

21.4.4.41.1 TimeString (tv )

The abstract operation TimeString takes argumenttv (a Number, but notNaN) and returns a String. It performs the following steps when called:

  1. Lethour beToZeroPaddedDecimalString((HourFromTime(tv)), 2).
  2. Letminute beToZeroPaddedDecimalString((MinFromTime(tv)), 2).
  3. Letsecond beToZeroPaddedDecimalString((SecFromTime(tv)), 2).
  4. Return thestring-concatenation ofhour,":",minute,":",second, the code unit 0x0020 (SPACE), and"GMT".

21.4.4.41.2 DateString (tv )

The abstract operation DateString takes argumenttv (a Number, but notNaN) and returns a String. It performs the following steps when called:

  1. Letweekday be the Name of the entry inTable 63 with the NumberWeekDay(tv).
  2. Letmonth be the Name of the entry inTable 64 with the NumberMonthFromTime(tv).
  3. Letday beToZeroPaddedDecimalString((DateFromTime(tv)), 2).
  4. Letyv beYearFromTime(tv).
  5. Ifyv is+0𝔽 oryv >+0𝔽, letyearSign be the empty String; otherwise letyearSign be"-".
  6. LetpaddedYear beToZeroPaddedDecimalString(abs((yv)), 4).
  7. Return thestring-concatenation ofweekday, the code unit 0x0020 (SPACE),month, the code unit 0x0020 (SPACE),day, the code unit 0x0020 (SPACE),yearSign, andpaddedYear.
Table 63: Names of days of the week
Number Name
+0𝔽"Sun"
1𝔽"Mon"
2𝔽"Tue"
3𝔽"Wed"
4𝔽"Thu"
5𝔽"Fri"
6𝔽"Sat"
Table 64: Names of months of the year
Number Name
+0𝔽"Jan"
1𝔽"Feb"
2𝔽"Mar"
3𝔽"Apr"
4𝔽"May"
5𝔽"Jun"
6𝔽"Jul"
7𝔽"Aug"
8𝔽"Sep"
9𝔽"Oct"
10𝔽"Nov"
11𝔽"Dec"

21.4.4.41.3 TimeZoneString (tv )

The abstract operation TimeZoneString takes argumenttv (anintegral Number) and returns a String. It performs the following steps when called:

  1. LetsystemTimeZoneIdentifier beSystemTimeZoneIdentifier().
  2. IfIsTimeZoneOffsetString(systemTimeZoneIdentifier) istrue, then
    1. LetoffsetNs beParseTimeZoneOffsetString(systemTimeZoneIdentifier).
  3. Else,
    1. LetoffsetNs beGetNamedTimeZoneOffsetNanoseconds(systemTimeZoneIdentifier,((tv) × 106)).
  4. Letoffset be𝔽(truncate(offsetNs / 106)).
  5. Ifoffset is+0𝔽 oroffset >+0𝔽, then
    1. LetoffsetSign be"+".
    2. LetabsOffset beoffset.
  6. Else,
    1. LetoffsetSign be"-".
    2. LetabsOffset be -offset.
  7. LetoffsetMin beToZeroPaddedDecimalString((MinFromTime(absOffset)), 2).
  8. LetoffsetHour beToZeroPaddedDecimalString((HourFromTime(absOffset)), 2).
  9. LettzName be animplementation-defined string that is either the empty String or thestring-concatenation of the code unit 0x0020 (SPACE), the code unit 0x0028 (LEFT PARENTHESIS), animplementation-defined timezone name, and the code unit 0x0029 (RIGHT PARENTHESIS).
  10. Return thestring-concatenation ofoffsetSign,offsetHour,offsetMin, andtzName.

21.4.4.41.4 ToDateString (tv )

The abstract operation ToDateString takes argumenttv (anintegral Number orNaN) and returns a String. It performs the following steps when called:

  1. Iftv isNaN, return"Invalid Date".
  2. Lett beLocalTime(tv).
  3. Return thestring-concatenation ofDateString(t), the code unit 0x0020 (SPACE),TimeString(t), andTimeZoneString(tv).

21.4.4.42 Date.prototype.toTimeString ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lettv bedateObject.[[DateValue]].
  4. Iftv isNaN, return"Invalid Date".
  5. Lett beLocalTime(tv).
  6. Return thestring-concatenation ofTimeString(t) andTimeZoneString(tv).

21.4.4.43 Date.prototype.toUTCString ( )

This method returns a String value representing the instant in time corresponding to thethis value. The format of the String is based upon "HTTP-date" from RFC 7231, generalized to support the full range of times supported by ECMAScript Dates.

It performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. Lettv bedateObject.[[DateValue]].
  4. Iftv isNaN, return"Invalid Date".
  5. Letweekday be the Name of the entry inTable 63 with the NumberWeekDay(tv).
  6. Letmonth be the Name of the entry inTable 64 with the NumberMonthFromTime(tv).
  7. Letday beToZeroPaddedDecimalString((DateFromTime(tv)), 2).
  8. Letyv beYearFromTime(tv).
  9. Ifyv is+0𝔽 oryv >+0𝔽, letyearSign be the empty String; otherwise letyearSign be"-".
  10. LetpaddedYear beToZeroPaddedDecimalString(abs((yv)), 4).
  11. Return thestring-concatenation ofweekday,",", the code unit 0x0020 (SPACE),day, the code unit 0x0020 (SPACE),month, the code unit 0x0020 (SPACE),yearSign,paddedYear, the code unit 0x0020 (SPACE), andTimeString(tv).

21.4.4.44 Date.prototype.valueOf ( )

This method performs the following steps when called:

  1. LetdateObject be thethis value.
  2. Perform ? RequireInternalSlot(dateObject,[[DateValue]]).
  3. ReturndateObject.[[DateValue]].

21.4.4.45 Date.prototype [ %Symbol.toPrimitive% ] (hint )

This method is called by ECMAScript language operators to convert a Date to a primitive value. The allowed values forhint are"default","number", and"string". Dates are unique among built-in ECMAScript object in that they treat"default" as being equivalent to"string", All other built-in ECMAScript objects treat"default" as being equivalent to"number".

It performs the following steps when called:

  1. LetO be thethis value.
  2. IfOis not an Object, throw aTypeError exception.
  3. Ifhint is either"string" or"default", then
    1. LettryFirst bestring.
  4. Else ifhint is"number", then
    1. LettryFirst benumber.
  5. Else,
    1. Throw aTypeError exception.
  6. Return ? OrdinaryToPrimitive(O,tryFirst).

This property has the attributes {[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:true }.

The value of the"name" property of this method is"[Symbol.toPrimitive]".

21.4.5 Properties of Date Instances

Date instances areordinary objects that inherit properties from theDate prototype object. Date instances also have a[[DateValue]] internal slot. The[[DateValue]] internal slot is thetime value represented by this Date.


[8]ページ先頭

©2009-2025 Movatter.jp