ISO/IEC 16262:2011
(Main)Information technology — Programming languages, their environments and system software interfaces — ECMAScript language specification
Information technology — Programming languages, their environments and system software interfaces — ECMAScript language specification
ISO/IEC 16262:2011 defines the ECMAScript scripting language.
Technologies de l'information — Langages de programmation, leurs environnements et interfaces de logiciel système — Spécification du langage ECMAscript
General Information
Relations
Standards Content (Sample)
INTERNATIONAL ISO/IEC
STANDARD 16262
Third edition
2011-06.15
Information technology — Programming
languages, their environments and
system software interfaces —
ECMAScript language specification
Technologies de l'information — Langages de programmation, leurs
environnements et interfaces de logiciel système — Spécification du
langage ECMAscript
Reference number
ISO/IEC 16262:2011(E)
©
ISO/IEC 2011
---------------------- Page: 1 ----------------------
ISO/IEC 16262:2011(E)
COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2011
All rights reserved. Unless otherwise specif ied, no part of this publication may be reproduced or utilized in any form or by any means,
electronic or mechanical, including photocop ying and microfilm, w ithout permission in writing from either ISO at the address below or
ISO's member body in the country of the requester.
ISO copyright office
Case postale 56 CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Published in Switzerland
ii © ISO/IEC 2011 – All rights reserved
---------------------- Page: 2 ----------------------
ISO/IEC 16262:2011(E)
Contents Page
Foreword .viii
Introduction.ix
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 Terms and definitions.4
5 Notational Conventions.8
5.1 Syntactic and Lexical Grammars.8
5.1.1 Context-Free Grammars.8
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.12
6 Source Text.13
7 Lexical Conventions.14
7.1 Unicode Format-Control Characters.14
7.2 White Space.15
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.20
7.8.1 Null Literals.20
7.8.2 Boolean Literals.20
7.8.3 Numeric Literals.20
7.8.4 String Literals.22
7.8.5 Regular Expression Literals.25
7.9 Automatic Semicolon Insertion.26
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.29
8.4 The String Type.29
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
© ISO/IEC 2011 — All rights reserved iii
---------------------- Page: 3 ----------------------
ISO/IEC 16262:2011(E)
8.7 The Reference Specification Type.35
8.7.1 GetValue (V).35
8.7.2 PutValue (V, W).36
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).41
8.12.8 [[DefaultValue]] (hint).41
8.12.9 [[DefineOwnProperty]] (P, Desc, Throw) .41
9 Type Conversion and Testing .43
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) .47
9.6 ToUint32: (Unsigned 32 Bit Integer) .47
9.7 ToUint16: (Unsigned 16 Bit Integer) .47
9.8 ToString.48
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.1 Identifier Resolution.57
10.4 Establishing an Execution Context .57
10.4.1 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.63
11.1 Primary Expressions.63
11.1.1 The this Keyword.63
11.1.2 Identifier Reference.63
11.1.3 Literal Reference.63
11.1.4 Array Initialiser.63
iv © ISO/IEC 2011 — All rights reserved
---------------------- Page: 4 ----------------------
ISO/IEC 16262:2011(E)
11.1.5 Object Initialiser.65
11.1.6 The Grouping Operator .67
11.2 Left-Hand-Side Expressions.67
11.2.1 Property Accessors.67
11.2.2 The new Operator.68
11.2.3 Function Calls.68
11.2.4 Argument Lists.69
11.2.5 Function Expressions.69
11.3 Postfix Expressions.69
11.3.1 Postfix Increment Operator.70
11.3.2 Postfix Decrement Operator.70
11.4 Unary Operators.70
11.4.1 The delete Operator.70
11.4.2 The void Operator.71
11.4.3 The typeof Operator.71
11.4.4 Prefix Increment Operator.71
11.4.5 Prefix Decrement Operator .72
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 ( ! ) .73
11.5 Multiplicative Operators.73
11.5.1 Applying the * Operator .73
11.5.2 Applying the / Operator .74
11.5.3 Applying the % Operator .74
11.6 Additive Operators.75
11.6.1 The Addition operator ( + ) .75
11.6.2 The Subtraction Operator ( - ) .75
11.6.3 Applying the Additive Operators to Numbers.75
11.7 Bitwise Shift Operators.76
11.7.1 The Left Shift Operator ( << ) .76
11.7.2 The Signed Right Shift Operator ( >> ) .76
11.7.3 The Unsigned Right Shift Operator ( >>> ).77
11.8 Relational Operators.77
11.8.1 The Less-than Operator ( < ) .77
11.8.2 The Greater-than Operator ( > ).78
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.80
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 .82
11.10 Binary Bitwise Operators .82
11.11 Binary Logical Operators .83
11.12 Conditional Operator ( ? : ) .84
11.13 Assignment Operators.84
11.13.1 Simple Assignment ( = ) .85
11.13.2 Compound Assignment ( op= ).85
11.14 Comma Operator ( , ).85
12 Statements.86
12.1 Block.86
© ISO/IEC 2011 — All rights reserved v
---------------------- Page: 5 ----------------------
ISO/IEC 16262:2011(E)
12.2 Variable Statement.87
12.2.1 Strict Mode Restrictions.88
12.3 Empty Statement.88
12.4 Expression Statement.89
12.5 The if Statement .89
12.6 Iteration Statements.89
12.6.1 The do-while Statement .90
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.93
12.9 The return Statement .93
12.10 The with Statement.93
12.10.1 Strict Mode Restrictions.94
12.11 The switch Statement .94
12.12 Labelled Statements.96
12.13 The throw Statement.96
12.14 The try Statement.96
12.14.1 Strict Mode Restrictions.97
12.15 The debugger statement.97
13 Function Definition.98
13.1 Strict Mode Restrictions.99
13.2 Creating Function Objects .99
13.2.1 [[Call]].100
13.2.2 [[Construct]].100
13.2.3 The [[ThrowTypeError]] Function Object .100
14 Program.101
14.1 Directive Prologues and the Use Strict Directive .
...
Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.