ECMA-262 5th Edition in HTML Format
Section Table Of Contents
This HTML file is NOT the official
ECMAScript Language Specification


The official specification is the PDF Document located at:
http://www.ecma-international.org/publications/standards/Ecma-262.htm
Ecma Standards and Technical Reports are made available to all interested persons or organizations, free of charge and copyright, in printed form and, as files in Acrobat ® PDF format.
For more information, see http://www.ecma-international.org/publications/index.html

This version was created by Richard Mallonée. It is released under the same terms as the original ECMAScript Language Specification.

Send comments and errata to: postmaster @ ecma262-5 . com (remove spaces)

This HTML file was created through manual conversion of the official PDF version.
  • It was created to make the ECMAScript standard more accessible and to allow references to specific sections through the use of hyperlinks.
  • It may contain errors and the official standard should be used for definitive purposes.
  • It is designed to provide a web-based visual presentation that is identical to the official PDF file, and is fully linkable.
  • The document validates perfectly as Strict mode HTML.
  • The document renders identically on all major contemporary browsers.
  • The text is identical to the official PDF file except for the correction of typographical errors, detailed at ELS5_HTML_with_CorrectionNotes.htm.
Additional information is available at ELS5_Info.htm.

The full online specification is available at ELS5_HTML.htm


Last update: June, 2010



ContentsPage

Introduction
...............................................................................................................................................vii
1
Scope...............................................................................................................................................1
2
Conformance.....................................................................................................................................1
3
Normative references.........................................................................................................................1
4
Overview...........................................................................................................................................1
4.1
Web Scripting ....................................................................................................................................2
4.2
Language Overview ...........................................................................................................................2
4.2.1
Objects .............................................................................................................................................3
4.2.2
The Strict Variant of ECMAScript .........................................................................................................4
4.3
Definitions ........................................................................................................................................4
 
 
5
Notational Conventions ......................................................................................................................7
5.1
Syntactic and Lexical Grammars .........................................................................................................7
5.1.1
Context-Free Grammars .....................................................................................................................7
5.1.2
The Lexical and RegExp Grammars ....................................................................................................8
5.1.3
The Numeric String Grammar .............................................................................................................8
5.1.4
The Syntactic Grammar .....................................................................................................................8
5.1.5
The JSON Grammar ...........................................................................................................................9
5.1.6
Grammar Notation .............................................................................................................................9
5.2
Algorithm Conventions .....................................................................................................................11
 
 
6
Source Text .....................................................................................................................................12
 
 
7
Lexical Conventions .........................................................................................................................13
7.1
Unicode Format-Control Characters ...................................................................................................14
7.2
White Space ....................................................................................................................................14
7.3
Line Terminators ..............................................................................................................................15
7.4
Comments ......................................................................................................................................16
7.5
Tokens ...........................................................................................................................................17
7.6
Identifier Names and Identifiers .........................................................................................................17
7.6.1
Reserved Words ..............................................................................................................................18
7.7
Punctuators ....................................................................................................................................19
7.8
Literals ...........................................................................................................................................19
7.8.1
Null Literals .....................................................................................................................................19
7.8.2
Boolean Literals ...............................................................................................................................20
7.8.3
Numeric Literals ..............................................................................................................................20
7.8.4
String Literals ..................................................................................................................................22
7.8.5
Regular Expression Literals ..............................................................................................................24
7.9
Automatic Semicolon Insertion .........................................................................................................25
7.9.1
Rules of Automatic Semicolon Insertion .............................................................................................26
7.9.2
Examples of Automatic Semicolon Insertion .......................................................................................27
 
 
8
Types .............................................................................................................................................28
8.1
The Undefined Type .........................................................................................................................28
8.2
The Null Type ...................................................................................................................................28
8.3
The Boolean Type ............................................................................................................................28
8.4
The String Type ................................................................................................................................28
8.5
The Number Type .............................................................................................................................29
8.6
The Object Type ...............................................................................................................................30
8.6.1
Property Attributes ...........................................................................................................................30
8.6.2
Object Internal Properties and Methods ..............................................................................................31
8.7
The Reference Specification Type .....................................................................................................34
8.7.1
GetValue (V) ...................................................................................................................................35
8.7.2
PutValue (V, W) ..............................................................................................................................35
8.8
The List Specification Type ..............................................................................................................36
8.9
The Completion Specification Type ...................................................................................................36
8.10
The Property Descriptor and Property Identifier Specification Types .....................................................37
8.10.1
IsAccessorDescriptor ( Desc ) .........................................................................................................37
8.10.2
IsDataDescriptor ( Desc ) ................................................................................................................37
8.10.3
IsGenericDescriptor ( Desc ) ............................................................................................................37
8.10.4
FromPropertyDescriptor ( Desc ) ......................................................................................................38
8.10.5
ToPropertyDescriptor ( Obj ) ............................................................................................................38
8.11
The Lexical Environment and Environment Record Specification Types ................................................39
8.12
Algorithms for Object Internal Methods .............................................................................................39
8.12.1
[[GetOwnProperty]] (P) ...................................................................................................................39
8.12.2
[[GetProperty]] (P) ..........................................................................................................................39
8.12.3
[[Get]] (P) ......................................................................................................................................39
8.12.4
[[CanPut]] (P) .................................................................................................................................39
8.12.5
[[Put]] ( P, V, Throw ) .......................................................................................................................40
8.12.6
[[HasProperty]] (P) .........................................................................................................................40
8.12.7
[[Delete]] (P, Throw) .......................................................................................................................40
8.12.8
[[DefaultValue]] (hint) ......................................................................................................................41
8.12.9
[[DefineOwnProperty]] (P, Desc, Throw) ............................................................................................41

9
Type Conversion and Testing ...........................................................................................................42
9.1
ToPrimitive ....................................................................................................................................43
9.2
ToBoolean .....................................................................................................................................43
9.3
ToNumber .....................................................................................................................................43
9.3.1
ToNumber Applied to the String Type .................................................................................................44
9.4
ToInteger .......................................................................................................................................46
9.5
ToInt32: (Signed 32 Bit Integer) .........................................................................................................46
9.6
ToUint32: (Unsigned 32 Bit Integer)....................................................................................................47
9.7
ToUint16: (Unsigned 16 Bit Integer)....................................................................................................47
9.8
ToString ........................................................................................................................................47
9.8.1
ToString Applied to the Number Type .................................................................................................48
9.9
ToObject .......................................................................................................................................49
9.10
CheckObjectCoercible ....................................................................................................................49
9.11
IsCallable ......................................................................................................................................49
9.12
The SameValue Algorithm ...............................................................................................................50

10
Executable Code and Execution Contexts ..........................................................................................50
10.1
Types of Executable Code ................................................................................................................50
10.1.1
Strict Mode Code ............................................................................................................................51
10.2
Lexical Environments ......................................................................................................................51
10.2.1
Environment Records ......................................................................................................................51
10.2.2
Lexical Environment Operations .......................................................................................................56
10.2.3
The Global Environment ...................................................................................................................56
10.3
Execution Contexts .........................................................................................................................56
10.3.
Identifier Resolution ........................................................................................................................57
10.4
Establishing an Execution Context ....................................................................................................57
10.4.
Entering Global Code .......................................................................................................................58
10.4.2
Entering Eval Code ..........................................................................................................................58
10.4.3
Entering Function Code ....................................................................................................................58
10.5
Declaration Binding Instantiation ......................................................................................................59
10.6
Arguments Object ..........................................................................................................................60

11
Expressions ..................................................................................................................................62
11.1
Primary Expressions ......................................................................................................................62
11.1.1
The this Keyword ............................................................................................................................62
11.1.2
Identifier Reference ........................................................................................................................63
11.1.3
Literal Reference ............................................................................................................................63
11.1.4
Array Initializer...............................................................................................................................63
11.1.5
Object Initializer.............................................................................................................................64
11.1.6
The Grouping Operator ................................................................................................................... 66
11.2
Left-Hand-Side Expressions ............................................................................................................ 66
11.2.1
Property Accessors ....................................................................................................................... 67
11.2.2
The new Operator .......................................................................................................................... 68
11.2.3
Function Calls ................................................................................................................................ 68
11.2.4
Argument Lists .............................................................................................................................. 68
11.2.5
Function Expressions ..................................................................................................................... 69
11.3
Postfix Expressions ....................................................................................................................... 69
11.3.1
Postfix Increment Operator ............................................................................................................. 69
11.3.2
Postfix Decrement Operator ............................................................................................................ 69
11.4
Unary Operators ............................................................................................................................ 70
11.4.1
The delete Operator ....................................................................................................................... 70
11.4.2
The void Operator .......................................................................................................................... 70
11.4.3
The typeof Operator ....................................................................................................................... 71
11.4.4
Prefix Increment Operator .............................................................................................................. 71
11.4.5
Prefix Decrement Operator ............................................................................................................. 71
11.4.6
Unary + Operator ........................................................................................................................... 72
11.4.7
Unary - Operator ............................................................................................................................ 72
11.4.8
Bitwise NOT Operator ( ~ ) ............................................................................................................... 72
11.4.9
Logical NOT Operator ( ! ) ................................................................................................................ 72
11.5
Multiplicative Operators .................................................................................................................. 72
11.5.1
Applying the * Operator ................................................................................................................. 73
11.5.2
Applying the / Operator ................................................................................................................... 73
11.5.3
Applying the % Operator ................................................................................................................. 74
11.6
Additive Operators ......................................................................................................................... 74
11.6.1
The Addition operator ( + ) ............................................................................................................... 74
11.6.2
The Subtraction Operator ( - ) .......................................................................................................... 75
11.6.3
Applying the Additive Operators to Numbers ..................................................................................... 75
11.7
Bitwise Shift Operators ................................................................................................................... 75
11.7.1
The Left Shift Operator ( << ) ............................................................................................................ 75
11.7.2
The Signed Right Shift Operator ( >> ) ............................................................................................... 76
11.7.3
The Unsigned Right Shift Operator ( >>> ) .......................................................................................... 76
11.8
Relational Operators ...................................................................................................................... 77
11.8.1
The Less-than Operator ( < ) ............................................................................................................ 77
11.8.2
The Greater-than Operator ( > ) ........................................................................................................ 77
11.8.3
The Less-than-or-equal Operator ( <= ) ............................................................................................. 78
11.8.4
The Greater-than-or-equal Operator ( >= ) .......................................................................................... 78
11.8.5
The Abstract Relational Comparison Algorithm .................................................................................. 78
11.8.6
The instanceof operator ................................................................................................................. 79
11.8.7
The in operator .............................................................................................................................. 79
11.9
Equality Operators ......................................................................................................................... 79
11.9.1
The Equals Operator ( == ) ............................................................................................................... 80
11.9.2
The Does-not-equals Operator ( != ) .................................................................................................. 80
11.9.3
The Abstract Equality Comparison Algorithm ..................................................................................... 80
11.9.4
The Strict Equals Operator ( === ) ..................................................................................................... 81
11.9.5
The Strict Does-not-equal Operator ( !== ) .......................................................................................... 81
11.9.6
The Strict Equality Comparison Algorithm ......................................................................................... 81
11.10
Binary Bitwise Operators ................................................................................................................ 82
11.11
Binary Logical Operators ................................................................................................................ 82
11.12
Conditional Operator ( ? : ) ............................................................................................................... 83
11.13
Assignment Operators ................................................................................................................... 84
11.13.1
Simple Assignment ( = ) .................................................................................................................. 84
11.13.2
Compound Assignment ( op= ) ......................................................................................................... 84
11.14
Comma Operator ( , ) ...................................................................................................................... 85
 
 
12
Statements .................................................................................................................................. 86
12.1
Block ............................................................................................................................................ 86
12.2
Variable Statement ........................................................................................................................ 87
12.2.1
Strict Mode Restrictions ..................................................................................................................88
12.3
Empty Statement ............................................................................................................................88
12.4
Expression Statement .....................................................................................................................88
12.5
The if Statement .............................................................................................................................89
12.6
Iteration Statements .......................................................................................................................89
12.6.1
The do-while Statement ...................................................................................................................89
12.6.2
The while Statement .......................................................................................................................90
12.6.3
The for Statement ...........................................................................................................................90
12.6.4
The for-in Statement .......................................................................................................................91
12.7
The continue Statement ...................................................................................................................92
12.8
The break Statement .......................................................................................................................92
12.9
The return Statement ......................................................................................................................92
12.10
The with Statement .........................................................................................................................93
12.10.1
Strict Mode Restrictions ..................................................................................................................93
12.11
The switch Statement .....................................................................................................................93
12.12
Labelled Statements .......................................................................................................................95
12.13
The throw Statement .......................................................................................................................95
12.14
The try Statement ...........................................................................................................................96
12.14.
Strict Mode Restrictions ..................................................................................................................97
12.15
The debugger statement ..................................................................................................................97

13
Function Definition ..........................................................................................................................97
13.1
Strict Mode Restrictions ..................................................................................................................98
13.2
Creating Function Objects ................................................................................................................99
13.2.1
[[Call]] ...........................................................................................................................................99
13.2.2
[[Construct]] .................................................................................................................................100
13.2.3
The [[ThrowTypeError]] Function Object ...........................................................................................100

14
Program ......................................................................................................................................100
14.1
Directive Prologues and the Use Strict Directive ................................................................................101

15
Standard Built-in ECMAScript Objects ..............................................................................................101
15.1
The Global Object ..........................................................................................................................102
15.1.1
Value Properties of the Global Object ...............................................................................................103
15.1.2
Function Properties of the Global Object ..........................................................................................103
15.1.3
URI Handling Function Properties ....................................................................................................105
15.1.4
Constructor Properties of the Global Object ......................................................................................109
15.1.5
Other Properties of the Global Object ...............................................................................................110
15.2
Object Objects ..............................................................................................................................111
15.2.1
The Object Constructor Called as a Function .....................................................................................111
15.2.2
The Object Constructor ..................................................................................................................111
15.2.3
Properties of the Object Constructor ...............................................................................................111
15.2.4
Properties of the Object Prototype Object .........................................................................................114
15.2.5
Properties of Object Instances ........................................................................................................116
15.3
Function Objects ...........................................................................................................................116
15.3.1
The Function Constructor Called as a Function ..................................................................................116
15.3.2
The Function Constructor ...............................................................................................................116
15.3.3
Properties of the Function Constructor ............................................................................................117
15.3.4
Properties of the Function Prototype Object ......................................................................................117
15.3.5
Properties of Function Instances .....................................................................................................120
15.4
Array Objects ...............................................................................................................................121
15.4.1
The Array Constructor Called as a Function ......................................................................................121
15.4.2
The Array Constructor ...................................................................................................................122
15.4.3
Properties of the Array Constructor .................................................................................................122
15.4.4
Properties of the Array Prototype Object .........................................................................................123
15.4.5
Properties of Array Instances .........................................................................................................139
15.5
String Objects ..............................................................................................................................140
15.5.1
The String Constructor Called as a Function .....................................................................................140
15.5.2
The String Constructor ..................................................................................................................141
15.5.3
Properties of the String Constructor ................................................................................................141
15.5.4
Properties of the String Prototype Object .........................................................................................141
15.5.5
Properties of String Instances ........................................................................................................150
15.6
Boolean Objects ............................................................................................................................151
15.6.1
The Boolean Constructor Called as a Function ..................................................................................151
15.6.2
The Boolean Constructor ...............................................................................................................151
15.6.3
Properties of the Boolean Constructor .............................................................................................152
15.6.4
Properties of the Boolean Prototype Object ......................................................................................152
15.6.5
Properties of Boolean Instances .....................................................................................................152
15.7
Number Objects ............................................................................................................................153
15.7.1
The Number Constructor Called as a Function ...................................................................................153
15.7.2
The Number Constructor ................................................................................................................153
15.7.3
Properties of the Number Constructor .............................................................................................153
15.7.4
Properties of the Number Prototype Object .......................................................................................154
15.7.5
Properties of Number Instances ......................................................................................................158
15.8
The Math Object ............................................................................................................................158
15.8.1
Value Properties of the Math Object .................................................................................................158
15.8.2
Function Properties of the Math Object ............................................................................................159
15.9
Date Objects .................................................................................................................................164
15.9.1
Overview of Date Objects and Definitions of Abstract Operators .........................................................164
15.9.2
The Date Constructor Called as a Function .......................................................................................169
15.9.3
The Date Constructor ....................................................................................................................169
15.9.4
Properties of the Date Constructor ..................................................................................................170
15.9.5
Properties of the Date Prototype Object ...........................................................................................171
15.9.6
Properties of Date Instances ..........................................................................................................178
15.10
RegExp (Regular Expression) Objects ..............................................................................................179
15.10.1
Patterns .......................................................................................................................................179
15.10.2
Pattern Semantics ........................................................................................................................181
15.10.3
The RegExp Constructor Called as a Function ...................................................................................193
15.10.4
The RegExp Constructor ................................................................................................................193
15.10.5
Properties of the RegExp Constructor ..............................................................................................194
15.10.6
Properties of the RegExp Prototype Object .......................................................................................194
15.10.7
Properties of RegExp Instances ......................................................................................................195
15.11
Error Objects ................................................................................................................................196
15.11.1
The Error Constructor Called as a Function .......................................................................................196
15.11.2
The Error Constructor ....................................................................................................................197
15.11.3
Properties of the Error Constructor .................................................................................................197
15.11.4
Properties of the Error Prototype Object ...........................................................................................197
15.11.5
Properties of Error Instances ..........................................................................................................198
15.11.6
Native Error Types Used in This Standard .........................................................................................198
15.11.7
NativeError Object Structure ...........................................................................................................199
15.12
The JSON Object ...........................................................................................................................200
15.12.1
The JSON Grammar .......................................................................................................................201
15.12.2
parse ( text [ , reviver ] ) .................................................................................................................202
15.12.3
stringify ( value [ , replacer [ , space ] ] ) ...........................................................................................203
 
16
Errors ..........................................................................................................................................207
 
 
 
 
Annex A (informative)
Grammar Summary ..................................................................................................209
Annex B (informative)
Compatibility ...........................................................................................................229
Annex C (informative)
The Strict Mode of ECMAScript ..................................................................................233
Annex D (informative)
Corrections and Clarifications in the 5th Edition with Possible 3rd Edition
 
Compatibility Impact ................................................................................................235
Annex E (informative)
Additions and Changes in the 5th Edition that Introduce Incompatibilities
 
with the 3rd Edition ..................................................................................................237