代码改变世界

[转载]ECMA-262 6th Edition / Draft August 24, 2014 Draft ECMAScript Language Specification

2014-09-17 16:06  Benoly  阅读(258)  评论(0编辑  收藏  举报

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-23.4

Draft

Report Errors and Issues at: https://bugs.ecmascript.org

Product: Draft for 6th Edition

Component: choose an appropriate one

Version: Rev 27, August 24, 2014 Draft

Ecma/TC39/2014/0xx

Contents

  1. Introduction
  2. 1 Scope
  3. 2 Conformance
  4. 3 Normative references
  5. 4 Overview
    1. 4.1 Web Scripting
    2. 4.2 ECMAScript Overview
      1. 4.2.1 Objects
      2. 4.2.2 The Strict Variant of ECMAScript
    3. 4.3 Terms and definitions
      1. 4.3.1 type
      2. 4.3.2 primitive value
      3. 4.3.3 object
      4. 4.3.4 constructor
      5. 4.3.5 prototype
      6. 4.3.6 ordinary object
      7. 4.3.7 exotic object
      8. 4.3.8 standard object
      9. 4.3.9 built-in object
      10. 4.3.10 undefined value
      11. 4.3.11 Undefined type
      12. 4.3.12 null value
      13. 4.3.13 Null type
      14. 4.3.14 Boolean value
      15. 4.3.15 Boolean type
      16. 4.3.16 Boolean object
      17. 4.3.17 String value
      18. 4.3.18 String type
      19. 4.3.19 String object
      20. 4.3.20 Number value
      21. 4.3.21 Number type
      22. 4.3.22 Number object
      23. 4.3.23 Infinity
      24. 4.3.24 NaN
      25. 4.3.25 Symbol value
      26. 4.3.26 Symbol type
      27. 4.3.27 Symbol object
      28. 4.3.28 function
      29. 4.3.29 built-in function
      30. 4.3.30 property
      31. 4.3.31 method
      32. 4.3.32 built-in method
      33. 4.3.33 attribute
      34. 4.3.34 own property
      35. 4.3.35 inherited property
    4. 4.4 Organization of This Specification
  6. 5 Notational Conventions
    1. 5.1 Syntactic and Lexical Grammars
      1. 5.1.1 Context-Free Grammars
      2. 5.1.2 The Lexical and RegExp Grammars
      3. 5.1.3 The Numeric String Grammar
      4. 5.1.4 The Syntactic Grammar
      5. 5.1.5 Grammar Notation
    2. 5.2 Algorithm Conventions
    3. 5.3 Static Semantic Rules
  7. 6 ECMAScript Data Types and Values
    1. 6.1 ECMAScript Language Types
      1. 6.1.1 The Undefined Type
      2. 6.1.2 The Null Type
      3. 6.1.3 The Boolean Type
      4. 6.1.4 The String Type
      5. 6.1.5 The Symbol Type
      6. 6.1.6 The Number Type
      7. 6.1.7 The Object Type
    2. 6.2 ECMAScript Specification Types
      1. 6.2.1 The List and Record Specification Type
      2. 6.2.2 The Completion Record Specification Type
      3. 6.2.3 The Reference Specification Type
      4. 6.2.4 The Property Descriptor Specification Type
      5. 6.2.5 The Lexical Environment and Environment Record Specification Types
      6. 6.2.6 Data Blocks
  8. 7 Abstract Operations
    1. 7.1 Type Conversion and Testing
      1. 7.1.1 ToPrimitive ( input [, PreferredType] )
      2. 7.1.2 ToBoolean ( argument )
      3. 7.1.3 ToNumber ( argument )
      4. 7.1.4 ToInteger ( argument )
      5. 7.1.5 ToInt32 ( argument ) — Signed 32 Bit Integer
      6. 7.1.6 ToUint32 ( argument ) — Unsigned 32 Bit Integer
      7. 7.1.7 ToInt16 ( argument ) — Signed 16 Bit Integer
      8. 7.1.8 ToUint16 ( argument ) — Unsigned 16 Bit Integer
      9. 7.1.9 ToInt8 ( argument ) — Signed 8 Bit Integer
      10. 7.1.10 ToUint8 ( argument ) — Unsigned 8 Bit Integer
      11. 7.1.11 ToUint8Clamp ( argument ) — Unsigned 8 Bit Integer, Clamped
      12. 7.1.12 ToString ( argument )
      13. 7.1.13 ToObject ( argument )
      14. 7.1.14 ToPropertyKey ( argument )
      15. 7.1.15 ToLength ( argument )
      16. 7.1.16 CanonicalNumericIndexString ( argument )
    2. 7.2 Testing and Comparison Operations
      1. 7.2.1 RequireObjectCoercible ( argument )
      2. 7.2.2 IsCallable ( argument )
      3. 7.2.3 SameValue(x, y)
      4. 7.2.4 SameValueZero(x, y)
      5. 7.2.5 IsConstructor ( argument )
      6. 7.2.6 IsPropertyKey ( argument )
      7. 7.2.7 IsExtensible (O)
      8. 7.2.8 IsInteger ( argument )
      9. 7.2.9 Abstract Relational Comparison
      10. 7.2.10 Abstract Equality Comparison
      11. 7.2.11 Strict Equality Comparison
    3. 7.3 Operations on Objects
      1. 7.3.1 Get (O, P)
      2. 7.3.2 Put (O, P, V, Throw)
      3. 7.3.3 CreateDataProperty (O, P, V)
      4. 7.3.4 CreateDataPropertyOrThrow (O, P, V)
      5. 7.3.5 DefinePropertyOrThrow (O, P, desc)
      6. 7.3.6 DeletePropertyOrThrow (O, P)
      7. 7.3.7 GetMethod (O, P)
      8. 7.3.8 HasProperty (O, P)
      9. 7.3.9 HasOwnProperty (O, P)
      10. 7.3.10 Invoke(O,P, [args])
      11. 7.3.11 SetIntegrityLevel (O, level)
      12. 7.3.12 TestIntegrityLevel (O, level)
      13. 7.3.13 CreateArrayFromList (elements)
      14. 7.3.14 CreateListFromArrayLike (obj)
      15. 7.3.15 OrdinaryHasInstance (C, O)
      16. 7.3.16 GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
      17. 7.3.17 CreateFromConstructor (F)
      18. 7.3.18 Construct (F, argumentsList)
      19. 7.3.19 GetOption (options, P)
      20. 7.3.20 EnumerableOwnNames (O)
      21. 7.3.21 GetFunctionRealm ( obj ) Abstract Operation
    4. 7.4 Operations on Iterator Objects
      1. 7.4.1 CheckIterable ( obj )
      2. 7.4.2 GetIterator ( obj, method )
      3. 7.4.3 IteratorNext ( iterator, value )
      4. 7.4.4 IteratorComplete ( iterResult )
      5. 7.4.5 IteratorValue ( iterResult )
      6. 7.4.6 IteratorStep ( iterator )
      7. 7.4.7 IteratorClose( iterator, completion )
      8. 7.4.8 CreateIterResultObject ( value, done )
      9. 7.4.9 CreateListIterator ( list )
      10. 7.4.10 CreateEmptyIterator ( )
      11. 7.4.11 CreateCompoundIterator ( iterator1, iterator2 )
    5. 7.5 Operations on Promise Objects
      1. 7.5.1 PromiseNew ( executor ) Abstract Operation
      2. 7.5.2 PromiseBuiltinCapability () Abstract Operation
      3. 7.5.3 PromiseOf (value) Abstract Operation
      4. 7.5.4 PromiseAll (promiseList) Abstract Operation
      5. 7.5.5 PromiseCatch (promise, rejectedAction) Abstract Operation
      6. 7.5.6 PromiseThen (promise, resolvedAction, rejectedAction) Abstract Operation
  9. 8 Executable Code and Execution Contexts
    1. 8.1 Lexical Environments
      1. 8.1.1 Environment Records
      2. 8.1.2 Lexical Environment Operations
    2. 8.2 Code Realms
      1. 8.2.1 CreateRealm ( ) Abstract Operation
      2. 8.2.2 CreateIntrinsics ( realmRec ) Abstract Operation
      3. 8.2.3 SetRealmGlobalObj ( realmRec, globalObj ) Abstract Operation
      4. 8.2.4 SetDefaultGlobalBindings ( realmRec ) Abstract Operation
    3. 8.3 Execution Contexts
      1. 8.3.1 ResolveBinding ( name ) Abstract Operation
      2. 8.3.2 GetThisEnvironment ( ) Abstract Operation
      3. 8.3.3 ResolveThisBinding ( ) Abstract Operation
      4. 8.3.4 GetGlobalObject ( ) Abstract Operation
    4. 8.4 Jobs and Job Queues
      1. 8.4.1 EnqueueJob ( queueName, job, arguments) Abstract Operation
      2. 8.4.2 NextJob result
    5. 8.5 Initialization
      1. 8.5.1 InitializeFirstRealm ( realm ) Abstract Operation
  10. 9 Ordinary and Exotic Objects Behaviours
    1. 9.1 Ordinary Object Internal Methods and Internal Slots
      1. 9.1.1 [[GetPrototypeOf]] ( )
      2. 9.1.2 [[SetPrototypeOf]] (V)
      3. 9.1.3 [[IsExtensible]] ( )
      4. 9.1.4 [[PreventExtensions]] ( )
      5. 9.1.5 [[GetOwnProperty]] (P)
      6. 9.1.6 [[DefineOwnProperty]] (P, Desc)
      7. 9.1.7 [[HasProperty]](P)
      8. 9.1.8 [[Get]] (P, Receiver)
      9. 9.1.9 [[Set]] ( P, V, Receiver)
      10. 9.1.10 [[Delete]] (P)
      11. 9.1.11 [[Enumerate]] ()
      12. 9.1.12 [[OwnPropertyKeys]] ( )
      13. 9.1.13 ObjectCreate(proto, internalSlotsList) Abstract Operation
      14. 9.1.14 OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto, internalSlotsList )
    2. 9.2 ECMAScript Function Objects
      1. 9.2.1 [[GetOwnProperty]] (P)
      2. 9.2.2 [[Call]] ( thisArgument, argumentsList)
      3. 9.2.3 [[Construct]] ( argumentsList)
      4. 9.2.4 FunctionAllocate (functionPrototype, strict) Abstract Operation
      5. 9.2.5 FunctionInitialize (F, kind, Strict, ParameterList, Body, Scope) Abstract Operation
      6. 9.2.6 FunctionCreate (kind, ParameterList, Body, Scope, Strict) Abstract Operation
      7. 9.2.7 GeneratorFunctionCreate (kind, ParameterList, Body, Scope, Strict) Abstract Operation
      8. 9.2.8 AddRestrictedFunctionProperties ( F, realm ) Abstract Operation
      9. 9.2.9 MakeConstructor (F, writablePrototype, prototype) Abstract Operation
      10. 9.2.10 MakeMethod ( F, methodName, homeObject) Abstract Operation
      11. 9.2.11 SetFunctionName (F, name, prefix) Abstract Operation
      12. 9.2.12 CloneMethod(function, newHome, newName) Abstract Operation
      13. 9.2.13 FunctionDeclarationInstantiation(func, argumentsList, env ) Abstract Operation
    3. 9.3 Built-in Function Objects
      1. 9.3.1 [[Call]] ( thisArgument, argumentsList)
      2. 9.3.2 CreateBuiltinFunction(realm, steps, prototype, internalSlotsList) Abstract Operation
    4. 9.4 Built-in Exotic Object Internal Methods and Data Fields
      1. 9.4.1 Bound Function Exotic Objects
      2. 9.4.2 Array Exotic Objects
      3. 9.4.3 String Exotic Objects
      4. 9.4.4 Arguments Exotic Objects
      5. 9.4.5 Integer Indexed Exotic Objects
      6. 9.4.6 Module Exotic Objects
    5. 9.5 Proxy Object Internal Methods and Internal Slots
      1. 9.5.1 [[GetPrototypeOf]] ( )
      2. 9.5.2 [[SetPrototypeOf]] (V)
      3. 9.5.3 [[IsExtensible]] ( )
      4. 9.5.4 [[PreventExtensions]] ( )
      5. 9.5.5 [[GetOwnProperty]] (P)
      6. 9.5.6 [[DefineOwnProperty]] (P, Desc)
      7. 9.5.7 [[HasProperty]] (P)
      8. 9.5.8 [[Get]] (P, Receiver)
      9. 9.5.9 [[Set]] ( P, V, Receiver)
      10. 9.5.10 [[Delete]] (P)
      11. 9.5.11 [[Enumerate]] ()
      12. 9.5.12 [[OwnPropertyKeys]] ( )
      13. 9.5.13 [[Call]] (thisArgument, argumentsList)
      14. 9.5.14 [[Construct]] Internal Method
      15. 9.5.15 ProxyCreate(target, handler) Abstract Operation
  11. 10 ECMAScript Language: Source Code
    1. 10.1 Source Text
      1. 10.1.1 Static Semantics: UTF-16Encoding
      2. 10.1.2 Static Semantics: UTF16Decode(lead, trail)
    2. 10.2 Types of Source Code
      1. 10.2.1 Strict Mode Code
      2. 10.2.2 Non-ECMAScript Functions
  12. 11 ECMAScript Language: Lexical Grammar
    1. 11.1 Unicode Format-Control Characters
    2. 11.2 White Space
    3. 11.3 Line Terminators
    4. 11.4 Comments
    5. 11.5 Tokens
    6. 11.6 Names and Keywords
      1. 11.6.1 Identifier Names
      2. 11.6.2 Reserved Words
    7. 11.7 Punctuators
    8. 11.8 Literals
      1. 11.8.1 Null Literals
      2. 11.8.2 Boolean Literals
      3. 11.8.3 Numeric Literals
      4. 11.8.4 String Literals
      5. 11.8.5 Regular Expression Literals
      6. 11.8.6 Template Literal Lexical Components
    9. 11.9 Automatic Semicolon Insertion
      1. 11.9.1 Rules of Automatic Semicolon Insertion
      2. 11.9.2 Examples of Automatic Semicolon Insertion
  13. 12 ECMAScript Language: Expressions
    1. 12.1 Identifiers
      1. 12.1.1 Static Semantics: Early Errors
      2. 12.1.2 Static Semantics: BoundNames
      3. 12.1.3 Static Semantics: StringValue
      4. 12.1.4 Runtime Semantics: BindingInitialization
      5. 12.1.5 Runtime Semantics: Evaluation
    2. 12.2 Primary Expression
      1. 12.2.0 Semantics
      2. 12.2.1 The this Keyword
      3. 12.2.2 Identifier Reference
      4. 12.2.3 Literals
      5. 12.2.4 Array Initializer
      6. 12.2.5 Object Initializer
      7. 12.2.6 Function Defining Expressions
      8. 12.2.7 Regular Expression Literals
      9. 12.2.8 Template Literals
      10. 12.2.9 The Grouping Operator
    3. 12.3 Left-Hand-Side Expressions
      1. 12.3.1 Static Semantics
      2. 12.3.2 Property Accessors
      3. 12.3.3 The new Operator
      4. 12.3.4 Function Calls
      5. 12.3.5 The super Keyword
      6. 12.3.6 Argument Lists
      7. 12.3.7 Tagged Templates
    4. 12.4 Postfix Expressions
      1. 12.4.1 Static Semantics: Early Errors
      2. 12.4.2 Static Semantics: IsFunctionDefinition
      3. 12.4.3 Static Semantics: IsValidSimpleAssignmentTarget
      4. 12.4.4 Postfix Increment Operator
      5. 12.4.5 Postfix Decrement Operator
    5. 12.5 Unary Operators
      1. 12.5.1 Static Semantics: Early Errors
      2. 12.5.2 Static Semantics: IsFunctionDefinition
      3. 12.5.3 Static Semantics: IsValidSimpleAssignmentTarget
      4. 12.5.4 The delete Operator
      5. 12.5.5 The void Operator
      6. 12.5.6 The typeof Operator
      7. 12.5.7 Prefix Increment Operator
      8. 12.5.8 Prefix Decrement Operator
      9. 12.5.9 Unary + Operator
      10. 12.5.10 Unary - Operator
      11. 12.5.11 Bitwise NOT Operator ( ~ )
      12. 12.5.12 Logical NOT Operator ( ! )
    6. 12.6 Multiplicative Operators
      1. 12.6.1 Static Semantics: IsFunctionDefinition
      2. 12.6.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.6.3 Runtime Semantics: Evaluation
    7. 12.7 Additive Operators
      1. 12.7.1 Static Semantics: IsFunctionDefinition
      2. 12.7.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.7.3 The Addition operator ( + )
      4. 12.7.4 The Subtraction Operator ( - )
      5. 12.7.5 Applying the Additive Operators to Numbers
    8. 12.8 Bitwise Shift Operators
      1. 12.8.1 Static Semantics: IsFunctionDefinition
      2. 12.8.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.8.3 The Left Shift Operator ( << )
      4. 12.8.4 The Signed Right Shift Operator ( >> )
      5. 12.8.5 The Unsigned Right Shift Operator ( >>> )
    9. 12.9 Relational Operators
      1. 12.9.1 Static Semantics: IsFunctionDefinition
      2. 12.9.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.9.3 Runtime Semantics: Evaluation
      4. 12.9.4 Runtime Semantics: InstanceofOperator(O, C)
    10. 12.10 Equality Operators
      1. 12.10.1 Static Semantics: IsFunctionDefinition
      2. 12.10.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.10.3 Runtime Semantics: Evaluation
    11. 12.11 Binary Bitwise Operators
      1. 12.11.1 Static Semantics: IsFunctionDefinition
      2. 12.11.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.11.3 Runtime Semantics: Evaluation
    12. 12.12 Binary Logical Operators
      1. 12.12.1 Static Semantics: IsFunctionDefinition
      2. 12.12.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.12.3 Runtime Semantics: Evaluation
    13. 12.13 Conditional Operator ( ? : )
      1. 12.13.1 Static Semantics: IsFunctionDefinition
      2. 12.13.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.13.3 Runtime Semantics: Evaluation
    14. 12.14 Assignment Operators
      1. 12.14.1 Static Semantics: Early Errors
      2. 12.14.2 Static Semantics: IsFunctionDefinition
      3. 12.14.3 Static Semantics: IsValidSimpleAssignmentTarget
      4. 12.14.4 Runtime Semantics: Evaluation
      5. 12.14.5 Destructuring Assignment
    15. 12.15 Comma Operator ( , )
      1. 12.15.1 Static Semantics: IsFunctionDefinition
      2. 12.15.2 Static Semantics: IsValidSimpleAssignmentTarget
      3. 12.15.3 Runtime Semantics: Evaluation
  14. 13 ECMAScript Language: Statements and Declarations
    1. 13.0 Statement Semantics
      1. 13.0.1 Static Semantics: DeclarationPart
      2. 13.0.2 Static Semantics: VarDeclaredNames
      3. 13.0.3 Static Semantics: VarScopedDeclarations
      4. 13.0.4 Runtime Semantics: LabelledEvaluation
      5. 13.0.5 Runtime Semantics: Evaluation
    2. 13.1 Block
      1. 13.1.1 Static Semantics: Early Errors
      2. 13.1.2 Static Semantics: LexicallyDeclaredNames
      3. 13.1.3 Static Semantics: LexicallyScopedDeclarations
      4. 13.1.4 Static Semantics: TopLevelLexicallyDeclaredNames
      5. 13.1.5 Static Semantics: TopLevelLexicallyScopedDeclarations
      6. 13.1.6 Static Semantics: TopLevelVarDeclaredNames
      7. 13.1.7 Static Semantics: TopLevelVarScopedDeclarations
      8. 13.1.8 Static Semantics: VarDeclaredNames
      9. 13.1.9 Static Semantics: VarScopedDeclarations
      10. 13.1.10 Runtime Semantics: Evaluation
      11. 13.1.11 Runtime Semantics: BlockDeclarationInstantiation( code, env )
    3. 13.2 Declarations and the Variable Statement
      1. 13.2.1 Let and Const Declarations
      2. 13.2.2 Variable Statement
      3. 13.2.3 Destructuring Binding Patterns
    4. 13.3 Empty Statement
      1. 13.3.1 Runtime Semantics: Evaluation
    5. 13.4 Expression Statement
      1. 13.4.1 Runtime Semantics: Evaluation
    6. 13.5 The if Statement
      1. 13.5.1 Static Semantics: Early Errors
      2. 13.5.2 Static Semantics: VarDeclaredNames
      3. 13.5.3 Static Semantics: VarScopedDeclarations
      4. 13.5.4 Runtime Semantics: Evaluation
    7. 13.6 Iteration Statements
      1. 13.6.0 Semantics
      2. 13.6.1 The do-while Statement
      3. 13.6.2 The while Statement
      4. 13.6.3 The for Statement
      5. 13.6.4 The for-in and for-of Statements
    8. 13.7 The continue Statement
      1. 13.7.1 Static Semantics: Early Errors
      2. 13.7.2 Runtime Semantics: Evaluation
    9. 13.8 The break Statement
      1. 13.8.1 Static Semantics: Early Errors
      2. 13.8.2 Runtime Semantics: Evaluation
    10. 13.9 The return Statement
      1. 13.9.1 Runtime Semantics: Evaluation
    11. 13.10 The with Statement
      1. 13.10.1 Static Semantics: Early Errors
      2. 13.10.2 Static Semantics: VarDeclaredNames
      3. 13.10.3 Static Semantics: VarScopedDeclarations
      4. 13.10.4 Runtime Semantics: Evaluation
    12. 13.11 The switch Statement
      1. 13.11.1 Static Semantics: Early Errors
      2. 13.11.2 Static Semantics: LexicallyDeclaredNames
      3. 13.11.3 Static Semantics: LexicallyScopedDeclarations
      4. 13.11.4 Static Semantics: VarDeclaredNames
      5. 13.11.5 Static Semantics: VarScopedDeclarations
      6. 13.11.6 Runtime Semantics: CaseBlockEvaluation
      7. 13.11.7 Runtime Semantics: CaseSelectorEvaluation
      8. 13.11.8 Runtime Semantics: Evaluation
    13. 13.12 Labelled Statements
      1. 13.12.1 Static Semantics: Early Errors
      2. 13.12.2 Static Semantics: CurrentLabelSet
      3. 13.12.3 Static Semantics: IsLabelledFunction ( stmt )
      4. 13.12.4 Static Semantics: LexicallyDeclaredNames
      5. 13.12.5 Static Semantics: LexicallyScopedDeclarations
      6. 13.12.6 Static Semantics: TopLevelLexicallyDeclaredNames
      7. 13.12.7 Static Semantics: TopLevelLexicallyScopedDeclarations
      8. 13.12.8 Static Semantics: TopLevelVarDeclaredNames
      9. 13.12.9 Static Semantics: TopLevelVarScopedDeclarations
      10. 13.12.10 Static Semantics: VarDeclaredNames
      11. 13.12.11 Static Semantics: VarScopedDeclarations
      12. 13.12.12 Runtime Semantics: LabelledEvaluation
    14. 13.13 The throw Statement
      1. 13.13.1 Runtime Semantics: Evaluation
    15. 13.14 The try Statement
      1. 13.14.1 Static Semantics: Early Errors
      2. 13.14.2 Static Semantics: VarDeclaredNames
      3. 13.14.3 Static Semantics: VarScopedDeclarations
      4. 13.14.4 Runtime Semantics: BindingInitialization
      5. 13.14.5 Runtime Semantics: CatchClauseEvaluation
      6. 13.14.6 Runtime Semantics: Evaluation
    16. 13.15 The debugger statement
      1. 13.15.1 Runtime Semantics: Evaluation
  15. 14 ECMAScript Language: Functions and Classes
    1. 14.1 Function Definitions
      1. 14.1.1 Directive Prologues and the Use Strict Directive
      2. 14.1.2 Static Semantics: Early Errors
      3. 14.1.3 Static Semantics: BoundNames
      4. 14.1.4 Static Semantics: Contains
      5. 14.1.5 Static Semantics: ContainsExpression
      6. 14.1.6 Static Semantics: ExpectedArgumentCount
      7. 14.1.7 Static Semantics: HasInitializer
      8. 14.1.8 Static Semantics: HasName
      9. 14.1.9 Static Semantics: IsAnonymousFunctionDefinition ( production) Abstract Operation
      10. 14.1.10 Static Semantics: IsConstantDeclaration
      11. 14.1.11 Static Semantics: IsFunctionDefinition
      12. 14.1.12 Static Semantics: IsSimpleParameterList
      13. 14.1.13 Static Semantics: IsStrict
      14. 14.1.14 Static Semantics: LexicallyDeclaredNames
      15. 14.1.15 Static Semantics: LexicallyScopedDeclarations
      16. 14.1.16 Static Semantics: ReferencesSuper
      17. 14.1.17 Static Semantics: VarDeclaredNames
      18. 14.1.18 Static Semantics: VarScopedDeclarations
      19. 14.1.19 Runtime Semantics: EvaluateBody
      20. 14.1.20 Runtime Semantics: IteratorBindingInitialization
      21. 14.1.21 Runtime Semantics: InstantiateFunctionObject
      22. 14.1.22 Runtime Semantics: Evaluation
    2. 14.2 Arrow Function Definitions
      1. 14.2.1 Static Semantics: Early Errors
      2. 14.2.2 Static Semantics: BoundNames
      3. 14.2.3 Static Semantics: Contains
      4. 14.2.4 Static Semantics: ContainsExpression
      5. 14.2.5 Static Semantics: CoveredFormalsList
      6. 14.2.6 Static Semantics: ExpectedArgumentCount
      7. 14.2.7 Static Semantics: HasInitializer
      8. 14.2.8 Static Semantics: HasName
      9. 14.2.9 Static Semantics: IsSimpleParameterList
      10. 14.2.10 Static Semantics: LexicallyDeclaredNames
      11. 14.2.11 Static Semantics: LexicallyScopedDeclarations
      12. 14.2.12 Static Semantics: ReferencesSuper
      13. 14.2.13 Static Semantics: VarDeclaredNames
      14. 14.2.14 Static Semantics: VarScopedDeclarations
      15. 14.2.15 Runtime Semantics: IteratorBindingInitialization
      16. 14.2.16 Runtime Semantics: EvaluateBody
      17. 14.2.17 Runtime Semantics: Evaluation
    3. 14.3 Method Definitions
      1. 14.3.1 Static Semantics: Early Errors
      2. 14.3.2 Static Semantics: ComputedPropertyContains
      3. 14.3.3 Static Semantics: ExpectedArgumentCount
      4. 14.3.4 Static Semantics: HasComputedPropertyKey
      5. 14.3.5 Static Semantics: PropName
      6. 14.3.6 Static Semantics: ReferencesSuper
      7. 14.3.7 Static Semantics: SpecialMethod
      8. 14.3.8 Runtime Semantics: DefineMethod
      9. 14.3.9 Runtime Semantics: PropertyDefinitionEvaluation
    4. 14.4 Generator Function Definitions
      1. 14.4.1 Static Semantics: Early Errors
      2. 14.4.2 Static Semantics: BoundNames
      3. 14.4.3 Static Semantics: ComputedPropertyContains
      4. 14.4.4 Static Semantics: Contains
      5. 14.4.5 Static Semantics: HasComputedPropertyKey
      6. 14.4.6 Static Semantics: HasName
      7. 14.4.7 Static Semantics: IsConstantDeclaration
      8. 14.4.8 Static Semantics: IsFunctionDefinition
      9. 14.4.9 Static Semantics: PropName
      10. 14.4.10 Static Semantics: ReferencesSuper
      11. 14.4.11 Runtime Semantics: EvaluateBody
      12. 14.4.12 Runtime Semantics: InstantiateFunctionObject
      13. 14.4.13 Runtime Semantics: PropertyDefinitionEvaluation
      14. 14.4.14 Runtime Semantics: Evaluation
    5. 14.5 Class Definitions
      1. 14.5.1 Static Semantics: Early Errors
      2. 14.5.2 Static Semantics: BoundNames
      3. 14.5.3 Static Semantics: ConstructorMethod
      4. 14.5.4 Static Semantics: Contains
      5. 14.5.5 Static Semantics: ComputedPropertyContains
      6. 14.5.6 Static Semantics: HasName
      7. 14.5.7 Static Semantics: IsConstantDeclaration
      8. 14.5.8 Static Semantics: IsFunctionDefinition
      9. 14.5.9 Static Semantics: IsStatic
      10. 14.5.10 Static Semantics: NonConstructorMethodDefinitions
      11. 14.5.11 Static Semantics: PrototypePropertyNameList
      12. 14.5.12 Static Semantics: PropName
      13. 14.5.13 Static Semantics: StaticPropertyNameList
      14. 14.5.14 Runtime Semantics: ClassDefinitionEvaluation
      15. 14.5.15 Runtime Semantics: Evaluation
    6. 14.6 Tail Position Calls
      1. 14.6.1 Static Semantics: IsInTailPosition(nonterminal) Abstract Operation
      2. 14.6.2 Static Semantics: HasProductionInTailPosition
      3. 14.6.3 Runtime Semantics: PrepareForTailCall ( )
  16. 15 ECMAScript Language: Scripts and Modules
    1. 15.1 Scripts
      1. 15.1.1 Static Semantics: Early Errors
      2. 15.1.2 Static Semantics: IsStrict
      3. 15.1.3 Static Semantics: LexicallyDeclaredNames
      4. 15.1.4 Static Semantics: LexicallyScopedDeclarations
      5. 15.1.5 Static Semantics: VarDeclaredNames
      6. 15.1.6 Static Semantics: VarScopedDeclarations
      7. 15.1.7 Runtime Semantics: ScriptEvaluation
      8. 15.1.8 Runtime Semantics: GlobalDeclarationInstantiation
      9. 15.1.9 Runtime Semantics: ScriptEvaluationJob ( source )
    2. 15.2 Modules
      1. 15.2.0 Module Static Semantics
      2. 15.2.1 Imports
      3. 15.2.2 Exports
      4. 15.2.3 Runtime Semantics: Loader State
      5. 15.2.4 Runtime Semantics: Module Loading
      6. 15.2.5 Runtime Semantics: Module Linking
      7. 15.2.6 Runtime Semantics: Module Evaluation
  17. 16 Error Handling and Language Extensions
    1. 16.1 Forbidden Extensions
  18. 17 ECMAScript Standard Built-in Objects
  19. 18 The Global Object
    1. 18.1 Value Properties of the Global Object
      1. 18.1.1 Infinity
      2. 18.1.2 NaN
      3. 18.1.3 undefined
    2. 18.2 Function Properties of the Global Object
      1. 18.2.1 eval (x)
      2. 18.2.2 isFinite (number)
      3. 18.2.3 isNaN (number)
      4. 18.2.4 parseFloat (string)
      5. 18.2.5 parseInt (string , radix)
      6. 18.2.6 URI Handling Functions
    3. 18.3 Constructor Properties of the Global Object
      1. 18.3.1 Array ( . . . )
      2. 18.3.2 ArrayBuffer ( . . . )
      3. 18.3.3 Boolean ( . . . )
      4. 18.3.4 DataView ( . . . )
      5. 18.3.5 Date ( . . . )
      6. 18.3.6 Error ( . . . )
      7. 18.3.7 EvalError ( . . . )
      8. 18.3.8 Float32Array ( . . . )
      9. 18.3.9 Float64Array ( . . . )
      10. 18.3.10 Function ( . . . )
      11. 18.3.11 Int8Array ( . . . )
      12. 18.3.12 Int16Array ( . . . )
      13. 18.3.13 Int32Array ( . . . )
      14. 18.3.14 Map ( . . . )
      15. 18.3.15 Number ( . . . )
      16. 18.3.16 Object ( . . . )
      17. 18.3.17 Promise ( . . . )
      18. 18.3.18 RangeError ( . . . )
      19. 18.3.19 ReferenceError ( . . . )
      20. 18.3.20 RegExp ( . . . )
      21. 18.3.21 Set ( . . . )
      22. 18.3.22 String ( . . . )
      23. 18.3.23 Symbol ( . . . )
      24. 18.3.24 SyntaxError ( . . . )
      25. 18.3.25 TypeError ( . . . )
      26. 18.3.26 Uint8Array ( . . . )
      27. 18.3.27 Uint8ClampedArray ( . . . )
      28. 18.3.28 Uint16Array ( . . . )
      29. 18.3.29 Uint32Array ( . . . )
      30. 18.3.30 URIError ( . . . )
      31. 18.3.31 WeakMap ( . . . )
      32. 18.3.32 WeakSet ( . . . )
    4. 18.4 Other Properties of the Global Object
      1. 18.4.1 JSON
      2. 18.4.2 Math
      3. 18.4.3 Proxy ( . . . )
      4. 18.4.4 Reflect
      5. 18.4.5 System
  20. 19 Fundamental Objects
    1. 19.1 Object Objects
      1. 19.1.1 The Object Constructor
      2. 19.1.2 Properties of the Object Constructor
      3. 19.1.3 Properties of the Object Prototype Object
      4. 19.1.4 Properties of Object Instances
    2. 19.2 Function Objects
      1. 19.2.1 The Function Constructor
      2. 19.2.2 Properties of the Function Constructor
      3. 19.2.3 Properties of the Function Prototype Object
      4. 19.2.4 Function Instances
    3. 19.3 Boolean Objects
      1. 19.3.1 The Boolean Constructor
      2. 19.3.2 Properties of the Boolean Constructor
      3. 19.3.3 Properties of the Boolean Prototype Object
      4. 19.3.4 Properties of Boolean Instances
    4. 19.4 Symbol Objects
      1. 19.4.1 The Symbol Constructor
      2. 19.4.2 Properties of the Symbol Constructor
      3. 19.4.3 Properties of the Symbol Prototype Object
      4. 19.4.4 Properties of Symbol Instances
    5. 19.5 Error Objects
      1. 19.5.1 The Error Constructor
      2. 19.5.2 Properties of the Error Constructor
      3. 19.5.3 Properties of the Error Prototype Object
      4. 19.5.4 Properties of Error Instances
      5. 19.5.5 Native Error Types Used in This Standard
      6. 19.5.6 NativeError Object Structure
  21. 20 Numbers and Dates
    1. 20.1 Number Objects
      1. 20.1.1 The Number Constructor
      2. 20.1.2 Properties of the Number Constructor
      3. 20.1.3 Properties of the Number Prototype Object
      4. 20.1.4 Properties of Number Instances
    2. 20.2 The Math Object
      1. 20.2.1 Value Properties of the Math Object
      2. 20.2.2 Function Properties of the Math Object
    3. 20.3 Date Objects
      1. 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
      2. 20.3.2 The Date Constructor
      3. 20.3.3 Properties of the Date Constructor
      4. 20.3.4 Properties of the Date Prototype Object
      5. 20.3.5 Properties of Date Instances
  22. 21 Text Processing
    1. 21.1 String Objects
      1. 21.1.1 The String Constructor
      2. 21.1.2 Properties of the String Constructor
      3. 21.1.3 Properties of the String Prototype Object
      4. 21.1.4 Properties of String Instances
      5. 21.1.5 String Iterator Objects
    2. 21.2 RegExp (Regular Expression) Objects
      1. 21.2.1 Patterns
      2. 21.2.2 Pattern Semantics
      3. 21.2.3 The RegExp Constructor
      4. 21.2.4 Properties of the RegExp Constructor
      5. 21.2.5 Properties of the RegExp Prototype Object
      6. 21.2.6 Properties of RegExp Instances
  23. 22 Indexed Collections
    1. 22.1 Array Objects
      1. 22.1.1 The Array Constructor
      2. 22.1.2 Properties of the Array Constructor
      3. 22.1.3 Properties of the Array Prototype Object
      4. 22.1.4 Properties of Array Instances
      5. 22.1.5 Array Iterator Objects
    2. 22.2 TypedArray Objects
      1. 22.2.1 The %TypedArray% Intrinsic Object
      2. 22.2.2 Properties of the %TypedArray% Intrinsic Object
      3. 22.2.3 Properties of the %TypedArrayPrototype% Object
      4. 22.2.4 The TypedArray Constructors
      5. 22.2.5 Properties of the TypedArray Constructors
      6. 22.2.6 Properties of TypedArray Prototype Objects
      7. 22.2.7 Properties of TypedArray Instances
  24. 23 Keyed Collection
    1. 23.1 Map Objects
      1. 23.1.1 The Map Constructor
      2. 23.1.2 Properties of the Map Constructor
      3. 23.1.3 Properties of the Map Prototype Object
      4. 23.1.4 Properties of Map Instances
      5. 23.1.5 Map Iterator Objects
    2. 23.2 Set Objects
      1. 23.2.1 The Set Constructor
      2. 23.2.2 Properties of the Set Constructor
      3. 23.2.3 Properties of the Set Prototype Object
      4. 23.2.4 Properties of Set Instances
      5. 23.2.5 Set Iterator Objects
    3. 23.3 WeakMap Objects
      1. 23.3.1 The WeakMap Constructor
      2. 23.3.2 Properties of the WeakMap Constructor
      3. 23.3.3 Properties of the WeakMap Prototype Object
      4. 23.3.4 Properties of WeakMap Instances
    4. 23.4 WeakSet Objects
      1. 23.4.1 The WeakSet Constructor
      2. 23.4.2 Properties of the WeakSet Constructor
      3. 23.4.3 Properties of the WeakSet Prototype Object
      4. 23.4.4 Properties of WeakSet Instances
  25. 24 Structured Data
    1. 24.1 ArrayBuffer Objects
      1. 24.1.1 Abstract Operations For ArrayBuffer Objects
      2. 24.1.2 The ArrayBuffer Constructor
      3. 24.1.3 Properties of the ArrayBuffer Constructor
      4. 24.1.4 Properties of the ArrayBuffer Prototype Object
      5. 24.1.5 Properties of the ArrayBuffer Instances
    2. 24.2 DataView Objects
      1. 24.2.1 Abstract Operations For DataView Objects
      2. 24.2.2 The DataView Constructor
      3. 24.2.3 Properties of the DataView Constructor
      4. 24.2.4 Properties of the DataView Prototype Object
      5. 24.2.5 Properties of DataView Instances
    3. 24.3 The JSON Object
      1. 24.3.1 JSON.parse ( text [ , reviver ] )
      2. 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
      3. 24.3.3 JSON [ @@toStringTag ]
  26. 25 Control Abstraction Objects
    1. 25.1 Iteration
      1. 25.1.1 Common Iteration Interfaces
      2. 25.1.2 The %IteratorPrototype% Object
    2. 25.2 GeneratorFunction Objects
      1. 25.2.1 The GeneratorFunction Constructor
      2. 25.2.2 Properties of the GeneratorFunction Constructor
      3. 25.2.3 Properties of the GeneratorFunction Prototype Object
      4. 25.2.4 GeneratorFunction Instances
    3. 25.3 Generator Objects
      1. 25.3.1 Properties of Generator Prototype
      2. 25.3.2 Properties of Generator Instances
      3. 25.3.3 Generator Abstract Operations
    4. 25.4 Promise Objects
      1. 25.4.1 Promise Abstract Operations
      2. 25.4.2 Promise Jobs
      3. 25.4.3 The Promise Constructor
      4. 25.4.4 Properties of the Promise Constructor
      5. 25.4.5 Properties of the Promise Prototype Object
      6. 25.4.6 Properties of Promise Instances
  27. 26 Reflection
    1. 26.1 The Reflect Object
      1. 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
      2. 26.1.2 Reflect.construct ( target, argumentsList )
      3. 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
      4. 26.1.4 Reflect.deleteProperty ( target, propertyKey )
      5. 26.1.5 Reflect.enumerate ( target )
      6. 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
      7. 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
      8. 26.1.8 Reflect.getPrototypeOf ( target )
      9. 26.1.9 Reflect.has ( target, propertyKey )
      10. 26.1.10 Reflect.isExtensible (target)
      11. 26.1.11 Reflect.ownKeys ( target )
      12. 26.1.12 Reflect.preventExtensions ( target )
      13. 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
      14. 26.1.14 Reflect.setPrototypeOf ( target, proto )
    2. 26.2 Loader Objects
      1. 26.2.1 The Reflect.Loader Constructor
      2. 26.2.2 Properties of the Loader Constructor
      3. 26.2.3 Properties of the Reflect.Loader Prototype Object
      4. 26.2.4 Properties of Reflect.Loader Instances
      5. 26.2.5 Loader Iterator Objects
    3. 26.3 The System Object
    4. 26.4 Proxy Objects
      1. 26.4.1 The Proxy Constructor Function
      2. 26.4.2 Properties of the Proxy Constructor Function
  28. Annex A (informative) Grammar Summary
    1. A.1 Lexical Grammar
    2. A.2 Expressions
    3. A.3 Statements
    4. A.4 Functions and Scripts
    5. A.5 Number Conversions
    6. A.6 Universal Resource Identifier Character Classes
    7. A.7 Regular Expressions
  29. Annex B (normative) Additional ECMAScript Features for Web Browsers
    1. B.1 Additional Syntax
      1. B.1.1 Numeric Literals
      2. B.1.2 String Literals
      3. B.1.3 HTML-like Comments
      4. B.1.4 Regular Expressions Patterns
    2. B.2 Additional Built-in Properties
      1. B.2.1 Additional Properties of the Global Object
      2. B.2.2 Additional Properties of the Object.prototype Object
      3. B.2.3 Additional Properties of the String.prototype Object
      4. B.2.4 Additional Properties of the Date.prototype Object
      5. B.2.5 Additional Properties of the RegExp.prototype Object
    3. B.3 Other Additional Features
      1. B.3.1 __proto__ Property Names in Object Initializers
      2. B.3.2 Labelled Function Declarations
      3. B.3.3 Block-Level Function Declarations Web Legacy Compatibility Semantics
      4. B.3.4 FunctionDeclarations in IfStatement Statement Clauses.
      5. B.3.5 VariableStatements in Catch blocks
  30. Annex C (informative) The Strict Mode of ECMAScript
  31. Annex D (informative) Corrections and Clarifications with Possible Compatibility Impact
    1. D.1 In Edition 6
    2. D.2 In Edition 5.1
    3. D.3 In Edition 5
  32. Annex E (informative) Additions and Changes That Introduce Incompatibilities with Prior Editions
    1. E.1 In the 6th Edition
    2. E.2 In the 5th Edition
  33. Bibliography