■ ECMA-262 Edition 5.1を読む(書籍紹介)

ECMA-262 Edition 5.1を読む
単行本完全日本語訳+解説
タイトル:ECMA-262 Edition 5.1を読む
訳・編:竹迫良範
出版社:秀和システム
ISBN-10:479803892X
ISBN-13:978-4798038926
Cコード:C3055
発売日:2013/9/25
商品の寸法:23.5 x 18.0 x 2.0 cm
ページ数:416ページ
本体価格:3,200円(税別)
URL:出版社のサポートページ

最もホットなプログラミング言語の一つ「JavaScript」の仕様書「ECMA-262」の最新版「Edition 5.1」を、元SC22/ECMAScript ad hoc委員が完全翻訳+解説。

目次
訳者まえがき
・JavaScriptの歴史
・ECMAScriptの登場
・ECMA-262 Edition 5とは
・本書の読み方
謝辞
はじめに
第1条 適用範囲
第2条 準拠条件
第3条 引用規定
第4条 概要
第5条 表記規約
第6条 ソーステキスト
第7条 字句規約
第8条 型
第9条 型変換とテスト
第10条 実行可能コードと実行コンテキスト
第11条 式
第12条 文
第13条 関数定義
第14条 Program(プログラム)
第15条 標準の組み込みECMAScriptオブジェクト
第16条 エラー
付属文書A 文法要約
付属文書B 互換性
付属文書C ECMAScriptのStrictモード
付属文書D 第5版における第3版との互換性に影響する訂正と明確化 
付属文書E 第5版における第3版との非互換性をもたらす追加と変更 
付属文書F 第5.1版における技術的に重要な訂正と明確化
参考文献

■ECMAScript 5.1を読む意義

主要ブラウザのECMAScript 5.1サポート状況を見ると、ほとんどすべてのブラウザで ECMAScript 5.1の機能が使えていることがわかります。 次のECMAScript 6に向けて草案の作成作業も行われていますが、成立は2014年以降にずれ込む予定で、最新のモダンブラウザでもまだ一部の機能しか実装されていません。 今後、ECMAScript 6の新仕様が策定されたとしても、幅広く様々な場所で使えるバージョンはECMAScript 5.1であることは間違いありません。

■誰が本書を読むべきか

本書はJavaScriptの入門書ではありませんが、プログラミング言語JavaScriptについて「正確なことを知りたい」と一度でも思ったことがある人は、十分対象読者となり得ます。 実装依存のコンパイラの多いプログラミング言語Cと違って、ECMAScriptは実装依存の仕様が少なく、細かい内部のアルゴリズムの挙動までしっかりと仕様で定義されていることに特徴があります。 ISO Rubyの仕様書の構成や、C++11の正規表現など、他の言語の標準化の際にもECMA-262の仕様は参考にされています。


FAQ

Q. ECMA-262の公的な日本語訳の仕様としてJIS X 3060があるのに、なぜ書籍の形で出版するのですか?

A. 完全な翻訳が存在しないからです。ECMA-262の公的な日本語訳として、日本工業規格JIS X 3060:2000がありますが、これは ECMA-262 Edition 3の仕様書の最初の章の概要のみを日本語訳しているだけで、その他の残りの章はすべて附属書としてISO/IEC 16262:1998の英文の仕様書全体が引用されています。 ECMA-262 Edition 5.1に相当するISO/IEC 16262:2011の仕様は、日本のSC22専門委員会でJIS規格化されないことが決定されたため、ECMA-262 Edition 5.1の公的な日本語訳は存在しないことになります。


サンプルページ

374~375ページの「付属文書D 第5版における第3版との互換性に影響する訂正と明確化」を解説します。

サンプルページ

■補足(訳者による仕様書解説)

ECMA-262 Edition 5.1仕様書の理解を深めるために、仕様の途中に、訳者による補足を追記しています。

グレー色の背景部分は訳者によって追記された補足です。補足は仕様書の一部ではありません。仕様の文言と区別するため、補足はですます調の文体で書かれています。具体的なサンプルコードを例示して各実装における挙動を解説するように心がけました。

※脚注

ECMA-262 Edition 5.1仕様書に残っていた誤植や間違いについては、脚注で明示しました。 今回の日本語翻訳作業時に、仕様書の誤植や間違いが発見されたため、本家にフィードバックしています。これらの誤植や間違いについては最新のECMA-262 Edition 6で修正される予定です。


豪華レビューア

本書の翻訳・執筆にあたり、3名のレビューアの方々にご協力いただきました。 「世界で一番仕様に忠実なECMA-262処理系」を開発されていた鈴木勇介(@Constellation)さんには、ECMA-262処理系を一から実装したことのある経験者の立場から、仕様書に書かれていない行間の意図など有益なコメントを数多くいただきました。 プログラミング言語処理系に詳しい稲葉一浩(@kinaba)さんには他言語での用例や翻訳の指針などたくさんのアドバイスをいただきました。 E4Xの邦訳で有名な外山真(@nanto_vi)さんには、膨大な量の文章をチェックしていただき、おかげさまで本書の翻訳の質を高めることができました。心より感謝いたします。

■Twitterでの反応

http://togetter.com/li/566463


目次

目次

訳者まえがき
JavaScriptの歴史. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  iii
ECMAScriptの登場. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  iii
ECMA-262 Edition 5とは. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   iv
ECMA-262 Edition 5.1とは. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    v
ECMA-262 日本語訳とJIS規格. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   vi
本書の読み方. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  vii
対象読者. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  vii
補足. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  vii
脚注. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
仕様書の原文ダウンロード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   ix
仕様書のここを変えたい. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   ix
仕様書のバグを見つけた. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   ix
謝辞. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    x

はじめに

第1条 適用範囲

第2条 準拠条件

第3条 引用規定

第4条 概要

4.1 Webスクリプティング. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    5
4.2 言語の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     5
4.2.1 オブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     7
4.2.2 厳格なECMAScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     8
4.3 用語と定義. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     9
4.3.1 型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     9
4.3.2 プリミティブ値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .    9
4.3.3 オブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     9
4.3.4 コンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .   10
4.3.5 プロトタイプ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    10
4.3.6 ネイティブオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    10
4.3.7 組み込みオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    10
4.3.8 ホストオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    10
4.3.9 undefined値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   11
4.3.10 Undefined型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    11
4.3.11 null値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   11
4.3.12 Null型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   11
4.3.13 Boolean値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    11
4.3.14 Boolean型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    11
4.3.15 Booleanオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    11
4.3.16 String値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   11
4.3.17 String型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   11
4.3.18 Stringオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
4.3.19 Number値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
4.3.20 Number型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
4.3.21 Numberオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
4.3.22 無限大. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
4.3.23 NaN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    12
4.3.24 関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
4.3.25 組み込み関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   13
4.3.26 プロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   13
4.3.27 メソッド. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   13
4.3.28 組み込みメソッド. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   13
4.3.29 属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   13
4.3.30 固有のプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   13
4.3.31 継承されたプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   13

第5条 表記規約

5.1 構文文法と字句文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .   14
5.1.1 文脈自由文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    14
5.1.2 字句文法と正規表現文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    14
5.1.3 数値文字列文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .   15
5.1.4 構文文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    15
5.1.5 JSON文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    15
5.1.6 文法の表記. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    16
5.2 アルゴリズム規約. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    20

第6条 ソーステキスト

第7条 字句規約

7.1 Unicode書式制御文字. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   25
7.2 ホワイトスペース. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    26
7.3 行終端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    27
7.4 コメント. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    28
7.5 トークン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    29
7.6 識別子名と識別子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    30
7.6.1 予約語. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    32
7.6.1.1 キーワード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    32
7.6.1.2 将来の予約語. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    32
7.7 区切り子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    33
7.8 リテラル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    33
7.8.1 Nullリテラル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    34
7.8.2 Booleanリテラル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   34
7.8.3 数値リテラル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    34
7.8.4 文字列リテラル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .   37
7.8.5 正規表現リテラル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    41
7.9 セミコロンの自動挿入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    43
7.9.1 セミコロンの自動挿入ルール. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    43
7.9.2 セミコロンの自動挿入の例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    44

第8条 型
8.1 Undefined型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   47
8.2 Null型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    47
8.3 Boolean型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   47
8.4 String型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    47
8.5 Number型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    48
8.6 Object型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    52
8.6.1 プロパティの属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    52
8.6.2 オブジェクトの内部プロパティと内部メソッド. . . . . . . . . . . . . . . . . . . . . .    54
8.7 Reference仕様書型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   58
8.7.1 GetValue (V). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    59
8.7.2 PutValue (V, W). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   60
8.8 List仕様書型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    62
8.9 Completion仕様書型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    62
8.10 Property Descriptor仕様書型とProperty Identifier仕様書型. . . . . . . . . . . . . . . .   62
8.10.1 IsAccessorDescriptor ( Desc ). . . . . . . . . . . . . . . . . . . . . . . . . . . .    63
8.10.2 IsDataDescriptor ( Desc ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    63
8.10.3 IsGenericDescriptor ( Desc ). . . . . . . . . . . . . . . . . . . . . . . . . . . . .   63
8.10.4 FromPropertyDescriptor ( Desc ). . . . . . . . . . . . . . . . . . . . . . . . . . .    64
8.10.5 ToPropertyDescriptor ( Obj ). . . . . . . . . . . . . . . . . . . . . . . . . . . . .   64
8.11 Lexical Environment仕様書型とEnvironment Record仕様書型. . . . . . . . . . . . . . . .    65
8.12 オブジェクトの内部メソッドのアルゴリズム. . . . . . . . . . . . . . . . . . . . . . . .   65
8.12.1 [[GetOwnProperty]] (P). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   66
8.12.2 [[GetProperty]] (P). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    66
8.12.3 [[Get]] (P). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    66
8.12.4 [[CanPut]] (P). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   67
8.12.5 [[Put]] ( P, V, Throw ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    67
8.12.6 [[HasProperty]] (P). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    68
8.12.7 [[Delete]] (P, Throw). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    68
8.12.8 [[DefaultValue]] (hint). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    69
8.12.9 [[DefineOwnProperty]] (P, Desc, Throw). . . . . . . . . . . . . . . . . . . . . . . .   70

第9条 型変換とテスト

9.1 ToPrimitive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   72
9.2 ToBoolean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   73
9.3 ToNumber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    73
9.3.1 String型に適用されるToNumber. . . . . . . . . . . . . . . . . . . . . . . . . . . . .    73
9.4 ToInteger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   77
9.5 ToInt32:(符号付き32ビット整数). . . . . . . . . . . . . . . . . . . . . . . . . . . .    78
9.6 ToUint32:(符号なし32ビット整数). . . . . . . . . . . . . . . . . . . . . . . . . . . .   78
9.7 ToUint16:(符号なし16ビット整数). . . . . . . . . . . . . . . . . . . . . . . . . . . .   79
9.8 ToString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    79
9.8.1 Number型に適用されるToString. . . . . . . . . . . . . . . . . . . . . . . . . . . . .    80
9.9 ToObject. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    81
9.10 CheckObjectCoercible. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   82
9.11 IsCallable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   82
9.12 SameValueアルゴリズム. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    83

第10条 実行可能コードと実行コンテキスト

10.1 実行可能コードの種類. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   83
10.1.1 Strictモードコード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   84
10.2 Lexical Environment(レキシカル環境). . . . . . . . . . . . . . . . . . . . . . . . .    84
10.2.1 Environment Record(環境レコード). . . . . . . . . . . . . . . . . . . . . . . . . .   85
10.2.1.1 宣言的Environment Record. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   86
10.2.1.1.1 HasBinding(N). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    87
10.2.1.1.2 CreateMutableBinding (N, D). . . . . . . . . . . . . . . . . . . . . . . . . . .    87
10.2.1.1.3 SetMutableBinding (N,V,S). . . . . . . . . . . . . . . . . . . . . . . . . . . .    87
10.2.1.1.4 GetBindingValue(N,S). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   88
10.2.1.1.5 DeleteBinding (N). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    88
10.2.1.1.6 ImplicitThisValue(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    88
10.2.1.1.7 CreateImmutableBinding (N). . . . . . . . . . . . . . . . . . . . . . . . . . . .   88
10.2.1.1.8 InitializeImmutableBinding (N,V). . . . . . . . . . . . . . . . . . . . . . . . .   89
10.2.1.2 オブジェクトEnvironment Record. . . . . . . . . . . . . . . . . . . . . . . . . . .   89
10.2.1.2.1 HasBinding (N). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   90
10.2.1.2.2 CreateMutableBinding (N, D). . . . . . . . . . . . . . . . . . . . . . . . . . .    90
10.2.1.2.3 SetMutableBinding (N, V, S). . . . . . . . . . . . . . . . . . . . . . . . . . .    90
10.2.1.2.4 GetBindingValue (N, S). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   91
10.2.1.2.5 DeleteBinding (N). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    91
10.2.1.2.6 ImplicitThisValue(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    91
10.2.2 Lexical Environment(レキシカル環境)の操作. . . . . . . . . . . . . . . . . . . . .    92
10.2.2.1 GetIdentifierReference (lex, name, strict). . . . . . . . . . . . . . . . . . . . .   92
10.2.2.2 NewDeclarativeEnvironment (E). . . . . . . . . . . . . . . . . . . . . . . . . . .    92
10.2.2.3 NewObjectEnvironment (O, E). . . . . . . . . . . . . . . . . . . . . . . . . . . .    93
10.2.3 グローバル環境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   93
10.3 実行コンテキスト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   93
10.3.1 識別子の解決. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   94
10.4 実行コンテキストの作成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   95
10.4.1 globalコードの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   95
10.4.1.1 global実行コンテキストの初期化. . . . . . . . . . . . . . . . . . . . . . . . . . .   95
10.4.2 evalコードの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   95
10.4.2.1 strictモードの制限. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   96
10.4.3 functionコードの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   96
10.5 宣言的バインディングのインスタンス化. . . . . . . . . . . . . . . . . . . . . . . . . .   97
10.6 argumentsオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    99

第11条 式

11.1 基本式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  104
11.1.1 thisキーワード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  104
11.1.2 識別子参照. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  104
11.1.3 リテラル参照. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  104
11.1.4 配列初期化子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  104
11.1.5 オブジェクト初期化子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  107
11.1.6 グループ化演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  110
11.2 左辺式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  110
11.2.1 プロパティアクセス演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  111
11.2.2 new演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   112
11.2.3 関数呼び出し. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  113
11.2.4 引数リスト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
11.2.5 関数式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
11.3 後置式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
11.3.1 後置インクリメント演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
11.3.2 後置デクリメント演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
11.4 単項演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  116
11.4.1 delete演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  116
11.4.2 void演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  117
11.4.3 typeof演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  117
11.4.4 前置インクリメント演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  118
11.4.5 前置デクリメント演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  118
11.4.6 単項+演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   118
11.4.7 単項-演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   119
11.4.8 ビット否定演算子(~). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   119
11.4.9 論理否定演算子(!). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   119
11.5 乗除演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
11.5.1 *演算子の適用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   120
11.5.2 /演算子の適用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   120
11.5.3 %演算子の適用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   121
11.6 加減演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  122
11.6.1 加法演算子(+). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   122
11.6.2 減法演算子(-). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   123
11.6.3 数への加減演算子の適用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  123
11.7 ビットシフト演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
11.7.1 左シフト演算子(<<). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
11.7.2 符号付き右シフト演算子(>>). . . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
11.7.3 符号なし右シフト演算子(>>>). . . . . . . . . . . . . . . . . . . . . . . . . . . .   125
11.8 関係演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  126
11.8.1 Less-than(小なり)演算子(<). . . . . . . . . . . . . . . . . . . . . . . . . . . .  126
11.8.2 Greater-than(大なり)演算子(>). . . . . . . . . . . . . . . . . . . . . . . . . .   127
11.8.3 Less-than-or-equal(以下)演算子(<=). . . . . . . . . . . . . . . . . . . . . . . .  127
11.8.4 Greater-than-or-equal(以上)演算子(>=). . . . . . . . . . . . . . . . . . . . . .   127
11.8.5 抽象関係比較のアルゴリズム. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
11.8.6 instanceof演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  129
11.8.7 in演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  129
11.9 等価演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  130
11.9.1 等価演算子(==). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  130
11.9.2 非等価演算子(!=). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  131
11.9.3 抽象等価比較のアルゴリズム. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  131
11.9.4 厳密等価演算子(===). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   133
11.9.5 厳密非等価演算子(!==). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   133
11.9.6 厳密等価比較アルゴリズム. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  133
11.10 二項ビット演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   134
11.11 二項論理演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   135
11.12 条件演算子(? :). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  136
11.13 代入演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   137
11.13.1 単純代入(=). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  138
11.13.2 複合代入(op=). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .   138
11.14 コンマ演算子(,). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  139

第12条 文

12.1 ブロック. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  141
12.2 変数文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  142
12.2.1 strictモードの制限事項. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  144
12.3 空文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  144
12.4 式文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  144
12.5 if文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  145
12.6 反復文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  146
12.6.1 do-while文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  146
12.6.2 while文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   146
12.6.3 for文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   147
12.6.4 for-in文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  148
12.7 continue文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  150
12.8 break文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   150
12.9 return文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  151
12.10 with文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   152
12.10.1 strictモードの制限事項. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   152
12.11 switch文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   152
12.12 ラベル付き文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   155
12.13 throw文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  156
12.14 try文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  156
12.14.1 strictモードの制限事項. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   158
12.15 debugger文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   158

第13条 関数定義

13.1 strictモードの制限. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  161
13.2 Functionオブジェクトの生成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  161
13.2.1 [[Call]]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  162
13.2.2 [[Construct]]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   163
13.2.3 [[ThrowTypeError]] Functionオブジェクト. . . . . . . . . . . . . . . . . . . . . . .   163

第14条 Program(プログラム)

14.1 Directive PrologueとUse Strict Directive. . . . . . . . . . . . . . . . . . . . . . . .  165

第15条 標準の組み込みECMAScriptオブジェクト

15.1 グローバルオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  167
15.1.1 グローバルオブジェクトの値プロパティ. . . . . . . . . . . . . . . . . . . . . . . . .  168
15.1.1.1 NaN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   168
15.1.1.2 Infinity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  168
15.1.1.3 undefined. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   168
15.1.2 グローバルオブジェクトの関数プロパティ. . . . . . . . . . . . . . . . . . . . . . . .  168
15.1.2.1 eval (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  168
15.1.2.1.1 Direct-call eval. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  168
15.1.2.2 parseInt (string , radix). . . . . . . . . . . . . . . . . . . . . . . . . . . . .   169
15.1.2.3 parseFloat (string). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   170
15.1.2.4 isNaN (number). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  170
15.1.2.5 isFinite (number). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .  171
15.1.3 URI処理関数のプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   171
15.1.3.1 decodeURI (encodedURI). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  176
15.1.3.2 decodeURIComponent (encodedURIComponent). . . . . . . . . . . . . . . . . . . . . .  176
15.1.3.3 encodeURI (uri). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   177
15.1.3.4 encodeURIComponent (uriComponent). . . . . . . . . . . . . . . . . . . . . . . . .   177
15.1.4 グローバルオブジェクトのコンストラクタプロパティ. . . . . . . . . . . . . . . . . . .  177
15.1.4.1 Object ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  177
15.1.4.2 Function ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  178
15.1.4.3 Array ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   178
15.1.4.4 String ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  178
15.1.4.5 Boolean ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   178
15.1.4.6 Number ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  178
15.1.4.7 Date ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  178
15.1.4.8 RegExp ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  178
15.1.4.9 Error ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   178
15.1.4.10 EvalError ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  178
15.1.4.11 RangeError ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   178
15.1.4.12 ReferenceError ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   178
15.1.4.13 SyntaxError ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  178
15.1.4.14 TypeError ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  179
15.1.4.15 URIError ( ... ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   179
15.1.5 グローバルオブジェクトのその他のプロパティ. . . . . . . . . . . . . . . . . . . . . .  179
15.1.5.1 Math. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  179
15.1.5.2 JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  179
15.2 Objectオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  179
15.2.1 関数として呼び出されるObjectコンストラクタ. . . . . . . . . . . . . . . . . . . . . .  179
15.2.1.1 Object ( [ value ] ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  179
15.2.2 Objectコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  179
15.2.2.1 new Object ( [ value ] ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  180
15.2.3 Objectコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .  180
15.2.3.1 Object.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  180
15.2.3.2 Object.getPrototypeOf ( O ). . . . . . . . . . . . . . . . . . . . . . . . . . . .   181
15.2.3.3 Object.getOwnPropertyDescriptor ( O, P ). . . . . . . . . . . . . . . . . . . . . .  181
15.2.3.4 Object.getOwnPropertyNames ( O ). . . . . . . . . . . . . . . . . . . . . . . . . .  181
15.2.3.5 Object.create ( O [, Properties] ). . . . . . . . . . . . . . . . . . . . . . . . .  182
15.2.3.6 Object.defineProperty ( O, P, Attributes ). . . . . . . . . . . . . . . . . . . . .  182
15.2.3.7 Object.defineProperties ( O, Properties ). . . . . . . . . . . . . . . . . . . . .   182
15.2.3.8 Object.seal ( O ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   183
15.2.3.9 Object.freeze ( O ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   183
15.2.3.10 Object.preventExtensions ( O ). . . . . . . . . . . . . . . . . . . . . . . . . .   184
15.2.3.11 Object.isSealed ( O ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  184
15.2.3.12 Object.isFrozen ( O ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  184
15.2.3.13 Object.isExtensible ( O ). . . . . . . . . . . . . . . . . . . . . . . . . . . . .  184
15.2.3.14 Object.keys ( O ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  185
15.2.4 Objectプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . . .  185
15.2.4.1 Object.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . . .  185
15.2.4.2 Object.prototype.toString ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .   185
15.2.4.3 Object.prototype.toLocaleString ( ). . . . . . . . . . . . . . . . . . . . . . . .   186
15.2.4.4 Object.prototype.valueOf ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .  186
15.2.4.5 Object.prototype.hasOwnProperty (V). . . . . . . . . . . . . . . . . . . . . . . .   186
15.2.4.6 Object.prototype.isPrototypeOf (V). . . . . . . . . . . . . . . . . . . . . . . . .  187
15.2.4.7 Object.prototype.propertyIsEnumerable (V). . . . . . . . . . . . . . . . . . . . .   187
15.2.5 Objectインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . .  188
15.3 Functionオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  188
15.3.1 関数として呼び出されるFunctionコンストラクタ. . . . . . . . . . . . . . . . . . . . .  188
15.3.1.1 Function (p1, p2, ... , pn, body). . . . . . . . . . . . . . . . . . . . . . . . .   188
15.3.2 Functionコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  188
15.3.2.1 new Function (p1, p2, ... , pn, body). . . . . . . . . . . . . . . . . . . . . . .   188
15.3.3 Functionコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . .  189
15.3.3.1 Function.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  190
15.3.3.2 Function.length. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   190
15.3.4 Functionプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . .  190
15.3.4.1 Function.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . .  190
15.3.4.2 Function.prototype.toString ( ). . . . . . . . . . . . . . . . . . . . . . . . . .   190
15.3.4.3 Function.prototype.apply (thisArg, argArray). . . . . . . . . . . . . . . . . . . .  191
15.3.4.4 Function.prototype.call (thisArg [ , arg1 [ , arg2, ... ] ] ). . . . . . . . . . .   191
15.3.4.5 Function.prototype.bind (thisArg [, arg1 [, arg2, ...]]). . . . . . . . . . . . . .   192
15.3.4.5.1 [[Call]]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  193
15.3.4.5.2 [[Construct]]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   193
15.3.4.5.3 [[HasInstance]] (V). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   194
15.3.5 Functionインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .  194
15.3.5.1 length. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  194
15.3.5.2 prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   195
15.3.5.3 [[HasInstance]] (V). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   195
15.3.5.4 [[Get]] (P). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   195
15.4 Arrayオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   196
15.4.1 関数として呼び出されるArrayコンストラクタ. . . . . . . . . . . . . . . . . . . . . .   197
15.4.1.1 Array ( [ item1 [ , item2 [ , ... ] ] ] ). . . . . . . . . . . . . . . . . . . . .   197
15.4.2 Arrayコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   197
15.4.2.1 new Array ( [ item0 [ , item1 [ , ... ] ] ] ). . . . . . . . . . . . . . . . . . .   197
15.4.2.2 new Array (len). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   197
15.4.3 Arrayコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .   198
15.4.3.1 Array.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   198
15.4.3.2 Array.isArray ( arg ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  198
15.4.4 Arrayプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . . .   198
15.4.4.1 Array.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . . .   199
15.4.4.2 Array.prototype.toString ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .  199
15.4.4.3 Array.prototype.toLocaleString ( ). . . . . . . . . . . . . . . . . . . . . . . . .  199
15.4.4.4 Array.prototype.concat ( [ item1 [ , item2 [ , ... ] ]] ). . . . . . . . . . . . .   201
15.4.4.5 Array.prototype.join (separator). . . . . . . . . . . . . . . . . . . . . . . . . .  202
15.4.4.6 Array.prototype.pop ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   203
15.4.4.7 Array.prototype.push ( [ item1 [ , item2 [ , ... ] ] ]). . . . . . . . . . . . . .   203
15.4.4.8 Array.prototype.reverse ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .   204
15.4.4.9 Array.prototype.shift ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . .   205
15.4.4.10 Array.prototype.slice (start, end). . . . . . . . . . . . . . . . . . . . . . . .   206
15.4.4.11 Array.prototype.sort (comparefn). . . . . . . . . . . . . . . . . . . . . . . . .   207
15.4.4.12 Array.prototype.splice (start, deleteCount [ , item1 [ , item2 [ , ... ] ] ] ). .   210
15.4.4.13 Array.prototype.unshift ( [ item1 [ , item2 [ , ... ]] ] ). . . . . . . . . . . .   213
15.4.4.14 Array.prototype.indexOf ( searchElement [ , fromIndex ] ). . . . . . . . . . . . .  214
15.4.4.15 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] ). . . . . . . . . . .  215
15.4.4.16 Array.prototype.every ( callbackfn [ , thisArg ] ). . . . . . . . . . . . . . . .   216
15.4.4.17 Array.prototype.some ( callbackfn [ , thisArg ] ). . . . . . . . . . . . . . . . .  217
15.4.4.18 Array.prototype.forEach ( callbackfn [ , thisArg ] ). . . . . . . . . . . . . . .   219
15.4.4.19 Array.prototype.map ( callbackfn [ , thisArg ] ). . . . . . . . . . . . . . . . .   220
15.4.4.20 Array.prototype.filter ( callbackfn [ , thisArg ] ). . . . . . . . . . . . . . . .  221
15.4.4.21 Array.prototype.reduce ( callbackfn [ , initialValue ] ). . . . . . . . . . . . .   223
15.4.4.22 Array.prototype.reduceRight ( callbackfn [ , initialValue ] ). . . . . . . . . . .  225
15.4.5 Arrayインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . .   226
15.4.5.1 [[DefineOwnProperty]] ( P, Desc, Throw ). . . . . . . . . . . . . . . . . . . . . .  226
15.4.5.2 length. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  228
15.5 Stringオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  229
15.5.1 関数として呼び出されるStringコンストラクタ. . . . . . . . . . . . . . . . . . . . . .  229
15.5.1.1 String ( [ value ] ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  229
15.5.2 Stringコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  229
15.5.2.1 new String ( [ value ] ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  229
15.5.3 Stringコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .  229
15.5.3.1 String.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  229
15.5.3.2 String.fromCharCode ( [ char0 [ , char1 [ , ... ] ] ] ). . . . . . . . . . . . . .   230
15.5.4 Stringプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . . .  230
15.5.4.1 String.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . . .  230
15.5.4.2 String.prototype.toString ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .   230
15.5.4.3 String.prototype.valueOf ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .  230
15.5.4.4 String.prototype.charAt (pos). . . . . . . . . . . . . . . . . . . . . . . . . . .   230
15.5.4.5 String.prototype.charCodeAt (pos). . . . . . . . . . . . . . . . . . . . . . . . .   231
15.5.4.6 String.prototype.concat ( [ string1 [ , string2 [ , ... ] ] ] ). . . . . . . . . .   232
15.5.4.7 String.prototype.indexOf (searchString, position). . . . . . . . . . . . . . . . .   232
15.5.4.8 String.prototype.lastIndexOf (searchString, position). . . . . . . . . . . . . . .   233
15.5.4.9 String.prototype.localeCompare (that). . . . . . . . . . . . . . . . . . . . . . .   234
15.5.4.10 String.prototype.match (regexp). . . . . . . . . . . . . . . . . . . . . . . . . .  235
15.5.4.11 String.prototype.replace (searchValue, replaceValue). . . . . . . . . . . . . . .   236
15.5.4.12 String.prototype.search (regexp). . . . . . . . . . . . . . . . . . . . . . . . .   238
15.5.4.13 String.prototype.slice (start, end). . . . . . . . . . . . . . . . . . . . . . . .  238
15.5.4.14 String.prototype.split (separator, limit). . . . . . . . . . . . . . . . . . . . .  239
15.5.4.15 String.prototype.substring (start, end). . . . . . . . . . . . . . . . . . . . . .  242
15.5.4.16 String.prototype.toLowerCase ( ). . . . . . . . . . . . . . . . . . . . . . . . .   243
15.5.4.17 String.prototype.toLocaleLowerCase ( ). . . . . . . . . . . . . . . . . . . . . .   244
15.5.4.18 String.prototype.toUpperCase ( ). . . . . . . . . . . . . . . . . . . . . . . . .   244
15.5.4.19 String.prototype.toLocaleUpperCase ( ). . . . . . . . . . . . . . . . . . . . . .   244
15.5.4.20 String.prototype.trim ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . .  245
15.5.5 Stringインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . .  245
15.5.5.1 length. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  245
15.5.5.2 [[GetOwnProperty]] ( P ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  246
15.6 Booleanオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   246
15.6.1 関数として呼び出されるBooleanコンストラクタ. . . . . . . . . . . . . . . . . . . . .   246
15.6.1.1 Boolean (value). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   246
15.6.2 Booleanコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   246
15.6.2.1 new Boolean (value). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   247
15.6.3 Booleanコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . .   247
15.6.3.1 Boolean.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   247
15.6.4 Booleanプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . .   247
15.6.4.1 Boolean.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . .   247
15.6.4.2 Boolean.prototype.toString ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .  247
15.6.4.3 Boolean.prototype.valueOf ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .   248
15.6.5 Booleanインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .   248
15.7 Numberオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  248
15.7.1 関数として呼び出されるNumberコンストラクタ. . . . . . . . . . . . . . . . . . . . . .  248
15.7.1.1 Number ( [ value ] ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  248
15.7.2 Numberコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  248
15.7.2.1 new Number ( [ value ] ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  249
15.7.3 Numberコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .  249
15.7.3.1 Number.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  249
15.7.3.2 Number.MAX_VALUE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  249
15.7.3.3 Number.MIN_VALUE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  249
15.7.3.4 Number.NaN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  249
15.7.3.5 Number.NEGATIVE_INFINITY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  250
15.7.3.6 Number.POSITIVE_INFINITY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  250
15.7.4 Numberプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . . .  250
15.7.4.1 Number.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . . .  250
15.7.4.2 Number.prototype.toString ( [ radix ] ). . . . . . . . . . . . . . . . . . . . . .   250
15.7.4.3 Number.prototype.toLocaleString(). . . . . . . . . . . . . . . . . . . . . . . . .   251
15.7.4.4 Number.prototype.valueOf ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .  251
15.7.4.5 Number.prototype.toFixed (fractionDigits). . . . . . . . . . . . . . . . . . . . .   251
15.7.4.6 Number.prototype.toExponential (fractionDigits). . . . . . . . . . . . . . . . . .   253
15.7.4.7 Number.prototype.toPrecision (precision). . . . . . . . . . . . . . . . . . . . . .  254
15.7.5 Numberインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . .  256
15.8 Mathオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  256
15.8.1 Mathオブジェクトの値プロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . .  256
15.8.1.1 E. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   256
15.8.1.2 LN10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  257
15.8.1.3 LN2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   257
15.8.1.4 LOG2E. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   257
15.8.1.5 LOG10E. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  257
15.8.1.6 PI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  257
15.8.1.7 SQRT1_2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   257
15.8.1.8 SQRT2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   258
15.8.2 Mathオブジェクトの関数プロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .  258
15.8.2.1 abs (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   258
15.8.2.2 acos (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  258
15.8.2.3 asin (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  259
15.8.2.4 atan (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  259
15.8.2.5 atan2 (y, x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  259
15.8.2.6 ceil (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  260
15.8.2.7 cos (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   260
15.8.2.8 exp (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   261
15.8.2.9 floor (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   261
15.8.2.10 log (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  261
15.8.2.11 max ( [ value1 [ , value2 [ , ... ] ] ] ). . . . . . . . . . . . . . . . . . . . .  262
15.8.2.12 min ( [ value1 [ , value2 [ , ... ] ] ] ). . . . . . . . . . . . . . . . . . . . .  262
15.8.2.13 pow (x, y). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   262
15.8.2.14 random ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   263
15.8.2.15 round (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  263
15.8.2.16 sin (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  264
15.8.2.17 sqrt (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   264
15.8.2.18 tan (x). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  264
15.9 Dateオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  265
15.9.1 Dateオブジェクトの概要と抽象演算子の定義. . . . . . . . . . . . . . . . . . . . . . .  265
15.9.1.1 時間値と時間範囲. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  265
15.9.1.2 日数と1日の時間. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   265
15.9.1.3 年を表す数字. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  265
15.9.1.4 月を表す数字. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  266
15.9.1.5 日を表す数字. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  267
15.9.1.6 曜日. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  267
15.9.1.7 ローカルタイムゾーン調整. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  268
15.9.1.8 夏時間調整. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  268
15.9.1.9 ローカル時刻. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  268
15.9.1.10 時、分、秒、ミリ秒. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   269
15.9.1.11 MakeTime (hour, min, sec, ms). . . . . . . . . . . . . . . . . . . . . . . . . . .   269
15.9.1.12 MakeDay (year, month, date). . . . . . . . . . . . . . . . . . . . . . . . . . . .  269
15.9.1.13 MakeDate (day, time). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   270
15.9.1.14 TimeClip (time). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  270
15.9.1.15 日時文字列フォーマット. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   270
15.9.1.15.1 拡張年. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   272
15.9.2 関数として呼び出されるDateコンストラクタ. . . . . . . . . . . . . . . . . . . . . . .  272
15.9.2.1 Date ( [ year [, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] ] ] )  273
15.9.3 Dateコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  273
15.9.3.1 new Date (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] ). . .  273
15.9.3.2 new Date (value). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  274
15.9.3.3 new Date ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  274
15.9.4 Dateコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . .  274
15.9.4.1 Date.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  274
15.9.4.2 Date.parse (string). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   275
15.9.4.3 Date.UTC (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] ). . .  275
15.9.4.4 Date.now ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  276
15.9.5 Dateプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . . . .  276
15.9.5.1 Date.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . . . .  276
15.9.5.2 Date.prototype.toString ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .   277
15.9.5.3 Date.prototype.toDateString ( ). . . . . . . . . . . . . . . . . . . . . . . . . .   277
15.9.5.4 Date.prototype.toTimeString ( ). . . . . . . . . . . . . . . . . . . . . . . . . .   277
15.9.5.5 Date.prototype.toLocaleString ( ). . . . . . . . . . . . . . . . . . . . . . . . .   277
15.9.5.6 Date.prototype.toLocaleDateString ( ). . . . . . . . . . . . . . . . . . . . . . .   277
15.9.5.7 Date.prototype.toLocaleTimeString ( ). . . . . . . . . . . . . . . . . . . . . . .   278
15.9.5.8 Date.prototype.valueOf ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . .  278
15.9.5.9 Date.prototype.getTime ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . .  278
15.9.5.10 Date.prototype.getFullYear ( ). . . . . . . . . . . . . . . . . . . . . . . . . .   278
15.9.5.11 Date.prototype.getUTCFullYear ( ). . . . . . . . . . . . . . . . . . . . . . . . .  278
15.9.5.12 Date.prototype.getMonth ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .  278
15.9.5.13 Date.prototype.getUTCMonth ( ). . . . . . . . . . . . . . . . . . . . . . . . . .   278
15.9.5.14 Date.prototype.getDate ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .   279
15.9.5.15 Date.prototype.getUTCDate ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .  279
15.9.5.16 Date.prototype.getDay ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . .  279
15.9.5.17 Date.prototype.getUTCDay ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .   279
15.9.5.18 Date.prototype.getHours ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .  279
15.9.5.19 Date.prototype.getUTCHours ( ). . . . . . . . . . . . . . . . . . . . . . . . . .   279
15.9.5.20 Date.prototype.getMinutes ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .  279
15.9.5.21 Date.prototype.getUTCMinutes ( ). . . . . . . . . . . . . . . . . . . . . . . . .   280
15.9.5.22 Date.prototype.getSeconds ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .  280
15.9.5.23 Date.prototype.getUTCSeconds ( ). . . . . . . . . . . . . . . . . . . . . . . . .   280
15.9.5.24 Date.prototype.getMilliseconds ( ). . . . . . . . . . . . . . . . . . . . . . . .   280
15.9.5.25 Date.prototype.getUTCMilliseconds ( ). . . . . . . . . . . . . . . . . . . . . . .  280
15.9.5.26 Date.prototype.getTimezoneOffset ( ). . . . . . . . . . . . . . . . . . . . . . .   280
15.9.5.27 Date.prototype.setTime (time). . . . . . . . . . . . . . . . . . . . . . . . . . .  280
15.9.5.28 Date.prototype.setMilliseconds (ms). . . . . . . . . . . . . . . . . . . . . . . .  281
15.9.5.29 Date.prototype.setUTCMilliseconds (ms). . . . . . . . . . . . . . . . . . . . . .   281
15.9.5.30 Date.prototype.setSeconds (sec [, ms ] ). . . . . . . . . . . . . . . . . . . . .   281
15.9.5.31 Date.prototype.setUTCSeconds (sec [, ms ] ). . . . . . . . . . . . . . . . . . . .  282
15.9.5.32 Date.prototype.setMinutes (min [, sec [, ms ] ] ). . . . . . . . . . . . . . . . .  282
15.9.5.33 Date.prototype.setUTCMinutes (min [, sec [, ms ] ] ). . . . . . . . . . . . . . .   283
15.9.5.34 Date.prototype.setHours (hour [, min [, sec [, ms ] ]] ). . . . . . . . . . . . .   283
15.9.5.35 Date.prototype.setUTCHours (hour [, min [, sec [, ms ] ] ] ). . . . . . . . . . .   284
15.9.5.36 Date.prototype.setDate (date). . . . . . . . . . . . . . . . . . . . . . . . . . .  284
15.9.5.37 Date.prototype.setUTCDate (date). . . . . . . . . . . . . . . . . . . . . . . . .   285
15.9.5.38 Date.prototype.setMonth (month [, date ] ). . . . . . . . . . . . . . . . . . . .   285
15.9.5.39 Date.prototype.setUTCMonth (month [, date ] ). . . . . . . . . . . . . . . . . . .  285
15.9.5.40 Date.prototype.setFullYear (year [, month [, date ] ]). . . . . . . . . . . . . .   286
15.9.5.41 Date.prototype.setUTCFullYear (year [, month [, date ] ] ). . . . . . . . . . . .   286
15.9.5.42 Date.prototype.toUTCString ( ). . . . . . . . . . . . . . . . . . . . . . . . . .   287
15.9.5.43 Date.prototype.toISOString ( ). . . . . . . . . . . . . . . . . . . . . . . . . .   287
15.9.5.44 Date.prototype.toJSON ( key ). . . . . . . . . . . . . . . . . . . . . . . . . . .  287
15.9.6 Dateインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . . .  288
15.10 RegExp(正規表現)オブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . .   288
15.10.1 パターン. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   288
15.10.2 パターンのセマンティクス. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   291
15.10.2.1 表記. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   291
15.10.2.2 Pattern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  293
15.10.2.3 Disjunction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  294
15.10.2.4 Alternative. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  294
15.10.2.5 Term. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   295
15.10.2.6 Assertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  298
15.10.2.7 Quantifier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   301
15.10.2.8 Atom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   302
15.10.2.9 AtomEscape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   305
15.10.2.10 CharacterEscape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   306
15.10.2.11 DecimalEscape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   307
15.10.2.12 CharacterClassEscape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  308
15.10.2.13 CharacterClass. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  308
15.10.2.14 ClassRanges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   309
15.10.2.15 NonemptyClassRanges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   309
15.10.2.16 NonemptyClassRangesNoDash. . . . . . . . . . . . . . . . . . . . . . . . . . . .   310
15.10.2.17 ClassAtom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   311
15.10.2.18 ClassAtomNoDash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   311
15.10.2.19 ClassEscape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   311
15.10.3 関数として呼び出されるRegExpコンストラクタ. . . . . . . . . . . . . . . . . . . . .   312
15.10.3.1 RegExp(pattern, flags). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   312
15.10.4 RegExpコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   312
15.10.4.1 new RegExp(pattern, flags). . . . . . . . . . . . . . . . . . . . . . . . . . . .   312
15.10.5 RegExpコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . .   313
15.10.5.1 RegExp.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   313
15.10.6 RegExpプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . .   314
15.10.6.1 RegExp.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . .   314
15.10.6.2 RegExp.prototype.exec(string). . . . . . . . . . . . . . . . . . . . . . . . . . .  314
15.10.6.3 RegExp.prototype.test(string). . . . . . . . . . . . . . . . . . . . . . . . . . .  316
15.10.6.4 RegExp.prototype.toString(). . . . . . . . . . . . . . . . . . . . . . . . . . . .  316
15.10.7 RegExpインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .   316
15.10.7.1 source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   316
15.10.7.2 global. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   316
15.10.7.3 ignoreCase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   316
15.10.7.4 multiline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  317
15.10.7.5 lastIndex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  317
15.11 Errorオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  317
15.11.1 関数として呼び出されるErrorコンストラクタ. . . . . . . . . . . . . . . . . . . . . .  317
15.11.1.1 Error (message). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  317
15.11.2 Errorコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  318
15.11.2.1 new Error (message). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  318
15.11.3 Errorコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . .  318
15.11.3.1 Error.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  318
15.11.4 Errorプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . . . . . .  318
15.11.4.1 Error.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . . . . .  318
15.11.4.2 Error.prototype.name. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   318
15.11.4.3 Error.prototype.message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  319
15.11.4.4 Error.prototype.toString ( ). . . . . . . . . . . . . . . . . . . . . . . . . . .   319
15.11.5 Errorインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . .  319
15.11.6 本仕様で使用されているネイティブエラー型. . . . . . . . . . . . . . . . . . . . . .   319
15.11.6.1 EvalError. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  319
15.11.6.2 RangeError. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   320
15.11.6.3 ReferenceError. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   320
15.11.6.4 SyntaxError. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  320
15.11.6.5 TypeError. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  320
15.11.6.6 URIError. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   320
15.11.7 NativeErrorオブジェクトの構造. . . . . . . . . . . . . . . . . . . . . . . . . . . .  320
15.11.7.1 関数として呼び出されるNativeErrorコンストラクタ. . . . . . . . . . . . . . . . . .  321
15.11.7.2 NativeError(message). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   321
15.11.7.3 NativeErrorコンストラクタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . .  321
15.11.7.4 new NativeError(message). . . . . . . . . . . . . . . . . . . . . . . . . . . . .   321
15.11.7.5 NativeErrorコンストラクタのプロパティ. . . . . . . . . . . . . . . . . . . . . . .  321
15.11.7.6 NativeError.prototype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  322
15.11.7.7 NativeErrorプロトタイプオブジェクトのプロパティ. . . . . . . . . . . . . . . . . .  322
15.11.7.8 NativeError.prototype.constructor. . . . . . . . . . . . . . . . . . . . . . . . .  322
15.11.7.9 NativeError.prototype.name. . . . . . . . . . . . . . . . . . . . . . . . . . . .   322
15.11.7.10 NativeError.prototype.message. . . . . . . . . . . . . . . . . . . . . . . . . .   322
15.11.7.11 NativeErrorインスタンスのプロパティ. . . . . . . . . . . . . . . . . . . . . . .   322
15.12 JSONオブジェクト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   323
15.12.1 JSON文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   323
15.12.1.1 JSON字句文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   323
15.12.1.2 JSON構文文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   324
15.12.2 parse ( text [ , reviver ] ). . . . . . . . . . . . . . . . . . . . . . . . . . . .   325
15.12.3 stringify ( value [ , replacer [ , space ] ] ). . . . . . . . . . . . . . . . . . .   327

第16条 エラー

付属文書A(参考情報) 文法要約

A.1 字句文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  335
A.2 数値変換. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   344
A.3 式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   346
A.4 文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   352
A.5 関数とプログラム. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   355
A.6 統一資源識別子(URI)の文字クラス. . . . . . . . . . . . . . . . . . . . . . . . . . . .  356
A.7 正規表現. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   357
A.8 JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   360
A.8.1 JSON字句文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   360
A.8.2 JSON構文文法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   361

付属文書B(参考情報) 互換性

B.1 追加の構文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   362
B.1.1 数値リテラル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   362
B.1.2 文字列リテラル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   363
B.2 追加のプロパティ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   365
B.2.1 escape (string). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  365
B.2.2 unescape (string). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  366
B.2.3 String.prototype.substr (start, length). . . . . . . . . . . . . . . . . . . . . . . .  367
B.2.4 Date.prototype.getYear ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   368
B.2.5 Date.prototype.setYear (year). . . . . . . . . . . . . . . . . . . . . . . . . . . . .  368
B.2.6 Date.prototype.toGMTString ( ). . . . . . . . . . . . . . . . . . . . . . . . . . . .   369

付属文書C(参考情報) ECMAScriptのStrictモード

strictモードの制約と例外. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  369

付属文書D(参考情報) 第5版における第3版との互換性に影響する訂正と明確化

付属文書E(参考情報) 第5版における第3版との非互換性をもたらす追加と変更

付属文書F(参考情報) 第5.1版における技術的に重要な訂正と明確化

参考文献

原文

Ecma Internationalの公式サイトから無償で仕様書の原文のPDFファイル(英語)をダウンロードできます。

Standard ECMA-262 - ECMAScript Language Specification Edition 5.1 (June 2011)
http://www.ecma-international.org/publications/standards/Ecma-262.htm

仕様書のバグをレポートする

ECMA-262に関する仕様書のバグは、以下のBugzillaに登録されています。

Bugzilla - Components for ECMA-262
https://bugs.ecmascript.org/

実際に本書の日本語訳の過程で見つかった仕様書のバグは、こちらのBugzillaに報告してフィードバックしています。次の版で修正されることになったものも多数あります。Bugzillaに報告するために特別な資格は必要なく、誰でもメールアドレスとパスワードを登録するだけで参加できます。


ECMAScript6について

ECMA-262の仕様書はEcma InternationalのTC39グループによりメンテナンスされていますが、誰でも仕様についての議論に参加できるes-discussというメーリングリストがあります。JavaScriptの生みの親であるBrendan Eich氏も/beの署名で議論に参加しています。

es-discuss -- Discussion of ECMAScript
https://mail.mozilla.org/listinfo/es-discuss

このメーリングリストで暗黙的に共有されているキーワードの1つに「Don't break the web」があります。「既存のWebを壊すような互換性のない言語仕様の拡張」はなかなか認められない空気があります。しかし、それでも後方互換性を重視しながら、慎重に新しい構文を追加していく作業は興味深いものです。たとえば、ECMAScript6で検討されているmoduleは、既存プログラムの変数名としてよく使われていると想定されているため、予約語としてキーワードを追加するのではなく、コンテキスト依存キーワードとして構文を修正する方法が提案されています。


訳者プロフィール

竹迫 良範(たけさこ よしのり)

1995年 広島市立大学 情報科学部 入学
2005年 サイボウズ・ラボ株式会社 入社
2008年 Microsoft MVPアワード(Developer Security)
2009年 SC22/ECMAScript ad hoc委員(ISO/IEC 16262標準化活動)
2012年 日本最大級のセキュリティコンテストSECCON実行委員長

Copyright notice

Copyright notice
Yoshinori TAKESAKO