![]() |
単行本 | 完全日本語訳+解説 |
---|---|
タイトル: | 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 6に向けて草案の作成作業も行われていますが、成立は2014年以降にずれ込む予定で、最新のモダンブラウザでもまだ一部の機能しか実装されていません。 今後、ECMAScript 6の新仕様が策定されたとしても、幅広く様々な場所で使えるバージョンはECMAScript 5.1であることは間違いありません。
本書はJavaScriptの入門書ではありませんが、プログラミング言語JavaScriptについて「正確なことを知りたい」と一度でも思ったことがある人は、十分対象読者となり得ます。 実装依存のコンパイラの多いプログラミング言語Cと違って、ECMAScriptは実装依存の仕様が少なく、細かい内部のアルゴリズムの挙動までしっかりと仕様で定義されていることに特徴があります。 ISO Rubyの仕様書の構成や、C++11の正規表現など、他の言語の標準化の際にもECMA-262の仕様は参考にされています。
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)さんには、膨大な量の文章をチェックしていただき、おかげさまで本書の翻訳の質を高めることができました。心より感謝いたします。
目次 訳者まえがき 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に報告するために特別な資格は必要なく、誰でもメールアドレスとパスワードを登録するだけで参加できます。
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実行委員長