ECMAScript
| パラダイム |
関数型プログラミング、マルチパラダイムプログラミング |
|---|---|
| 登場時期 | 1997年 |
| 開発者 |
ブレンダン・アイク |
| 最新リリース | ECMA-262 10th Edition (ECMAScript 2019)/ 2019年6月 |
| 型付け | ダック・タイピング、弱い動的型付け |
| 方言 | JavaScript, ActionScript, JScript, QtScript, DMDScript, InScript |
| 影響を受けた言語 |
Self、HyperTalk、AWK、C言語、CoffeeScript、Perl、Python、Java、Scheme |
| ウェブサイト |
ecma-international |
| 拡張子 |
es |
![]() | |
| 拡張子 | .es |
|---|---|
| MIMEタイプ | application/ecmascript[1] |
| 開発者 | サン・マイクロシステムズ Ecma International |
| 初版 | 1997年6月 |
| 最新版 | 10th Edition (2019年6月) |
| 種別 | スクリプト言語 |
| 派生元 | JavaScript |
| ウェブサイト | |
ECMAScript(エクマスクリプト)は、Ecma Internationalのもとで標準化手続きが行われているJavaScriptの規格。ISO/IEC JTC 1はISO/IEC 16262として、日本もJIS X 3060として規格を定めている。
バージョン[ソースを編集]
ECMAScript仕様は、Ecma InternationalにてECMA-262という規格番号で標準化されている。改訂にあたっては版 (edition) が更新されている。
6th editionから、「ECMAScript 2015」仕様の名称に発行年が付加されることになった。以降、ECMAScriptは毎年改訂されることになり、以降特定の版を指す場合は、edition名ではなく年号つきの仕様書名で呼ばれることが推奨されている[2]。
| Edition | 公開日 | 以前のバージョンとの違い | 編集者 |
|---|---|---|---|
| 1 | 1997年6月 | 初版 | Guy L. Steele, Jr. |
| 2 | 1998年6月 | Editionとしての仕様はそのままであり、ISO/IEC 16262 international standardに完全な対応をした | Mike Cowlishaw |
| 3 | 1999年12月 | 正規表現、よりよい文字列の取り扱い、新しいコントロール構文、try/catch例外処理、より厳格なエラー処理、数字のその他の書式化フォーマット | Mike Cowlishaw |
| 4 | 放棄 | 4th Editionは放棄された。言語の複雑化に関する政治的な差異による。いくつかの成果は5thの基礎として採用され、いくつかは6thの基礎となっている。 | |
| 5 | 2009年12月 | "strictモード"、初期化時に発生しがちなエラーを回避するための追加仕様の追加。多くの曖昧な部分、および仕様に準拠しつつも現実世界の実装の融通の利く振る舞いを明確にした。いくらかの新機能、getterやsetter、JSONライブラリのサポート、より完全なオブジェクトの属性のリフレクション[3] | Pratap Lakshman, Allen Wirfs-Brock |
| 5.1 | 2011年6月 | Pratap Lakshman, Allen Wirfs-Brock | |
| 6 (2015) | 2015年6月 | クラス、モジュール、イテレータ、for/ofループ、Pythonスタイルのジェネレータ、アロー関数、2進数および8進数の整数リテラル、Map、Set、WeakMap、WeakSet、プロキシ、テンプレート文字列、let、const、型付き配列、デフォルト引数、Symbol、Promise、分割代入、可変長引数 | Allen Wirfs-Brock |
| 7 (2016) | 2016年6月 | 冪乗演算子、Array.prototype.includes | Brian Terlson |
| 8 (2017) | 2017年6月 | 非同期関数 (async/await)、SharedArrayBufferとAtomics、String.padStart/padEnd、Object.values/entries、Object.getOwnPropertyDescriptors、関数の引数における末尾のカンマ許容 | |
| 9 (2018) | 2018年6月 | オブジェクトに対するスプレッド構文、非同期イテレーション、Promise.prototype.finally、正規表現への機能追加 | Brian Terlson |
| 10 (2019) | 2019年6月 | Brian Terlson, Bradley Farias, Jordan Harband | |
| 11 (2020) | 2020年6月 | Jordan Harband, Kevin Smith |
ECMAScriptにはいくつかの拡張が存在する。
- ECMA-357 (ECMAScript for XML) - 2004年公開、E4Xとして知られる
- ECMA-402(国際化API) - 2012年公開
- ECMA-404 (JSON) - 2013年公開
EcmaはECMAScriptのための "Compact Profile" も定義した — ES-CP、あるいはECMA 327として知られる — リソースの厳しいデバイス用にデザインされている。ECMAScriptのいくつかの動的な機能(『eval』関数など)はオプションにされている。これにより、処理系はプログラムの振る舞いに対してより多くの仮定ができるようになり、その結果、より良いパフォーマンス・トレードオフを実行時に得ることができるようになる。 HD DVD standardはECMAScript Compact Profileに準拠し、完全なECMAScriptの支援をより少ないメモリのデバイスで実行できるよう採用している。
文法[ソースを編集]
方言およびその呼称[ソースを編集]
ECMAScript は、ウェブブラウザをはじめとする多くのアプリケーションでサポートされている。DOMとの連携はドキュメントの操作を可能にする。
| アプリケーション | 呼称 | 最新バージョン | 対応するECMAScriptリビジョン |
|---|---|---|---|
| Mozillaおよびその派生品 | JavaScript | 1.8.5 | ECMA-262 5.1 edition ECMA-357[呼称 1] |
| Internet Explorer | JScript(IE8まで) | 5.8 | ECMA-262 3rd edition |
| JavaScript (Chakra) | 11.0 | ECMA-262 5.1 edition | |
| Google Chrome Opera |
JavaScript | ECMA-262 5.1 edition | |
| Safari (JSCore) | JavaScript | ECMA-262 5.1 edition | |
| Konqueror (KJS) | JavaScript | ECMA-262 3rd edition | |
| iCab | InScript | ECMA-262 3rd edition | |
| Microsoft .NET | JScript .NET | 10.0 | ECMA-262 4th草案 [呼称 2] |
| Adobe Flash | ActionScript | 3 | ECMA-262 4th草案 [呼称 3] ECMA-357 |
| Adobe Acrobat | JavaScript | 1.5 | ECMA-262 3rd edition |
| Adobe Creative Suite | ExtendScript | ECMA-262 3rd edition | |
| DMDScript | DMDScript | ECMA-262 3rd edition | |
| Qt | QtScript | ECMA-262 3rd edition | |
| Max/MSP | JavaScript | 1.5 | ECMA-262 3rd edition |
ECMAScript 4[ソースを編集]
ECMAScript 4は過去2回仕様作成が挑戦されたが、仕様がまとまらず、失敗に終わっている。
1回目[ソースを編集]
2000年〜2003年ごろ行われた。主に、旧Netscape社[4]とマイクロソフトによって行われたが、意見がまとまらずに、打ち切りとなった。この時の案はActionScriptへと引き継がれた。
2回目[ソースを編集]
2007年〜2008年ごろ、2回目の仕様作成が行われた。大きく機能を追加される予定であったが、意見がまとまらず、2008年8月13日に、小規模の改善にとどまる、ECMAScript 3.1を進めることとなった[5]。仕様は、http://www.ecmascript.org/docs.php にて公開されている。
以下のような予定があった。
- 大規模・大人数開発のための機能の追加[要出典]
- 型に関する機能の追加[要出典]
- ジェネリックプログラミングの機能の追加
- ECMAScript 3 が下位互換だが、互換でない仕様が一部に入る[要出典]
- ActionScript 3 の上位互換だが、互換でない仕様が一部に入る[要出典]
実装[ソースを編集]
- V8 - C++ - Google Chromeブラウザで使われている
- Rhino (Rhino) - Java
- Narcissus - JavaScript
- SpiderMonkey (SpiderMonkey) - C - Firefox/Mozillaブラウザで使われている
- KJS - C++ - KDEのKonquerorブラウザで使われている
- JavaScriptCore - C++ - MAC OS XのSafariブラウザやdashboardで使われている。KJSベース
- NJS - C
- SEE - Simple ECMAScript Engine - C
- ixlib - C++
- QSA - Qt Script for Applications - C++
- DMDScript - C++/D
- DMonkey - Delphi
- FESI - Free EcmaScript Interpreter - Java
- Scriptonite - Java
- xwt - Java
- JANET - Java
- Epimetheus - C++ - Mozillaプロジェクトによる以前のECMAScript Edition 4草案の実装
脚注[ソースを編集]
関連項目[ソースを編集]
- ECMAScript for XML (E4X)
- JavaScript Object Notation (JSON)
- CommonJS
- TypeScript: JavaScriptの構文を保ちつつ、型に関する機能を外部的に追加したプログラミング言語
外部リンク[ソースを編集]
この節の外部リンクはウィキペディアの方針やガイドラインに違反しているおそれがあります。過度または不適切な外部リンクを整理し、有用なリンクを脚注で参照するよう記事の改善にご協力ください。 |
- ECMAScript
- ECMAScript言語仕様
| ||||||||||||||||||
| ||||||||||||||||||||||||
