「ECMAScript」の版間の差分
削除された内容 追加された内容
注釈テンプレートの変更 |
|||
| (62人の利用者による、間の107版が非表示) | |||
1行目:
{{出典の明記|date=2020年6月}}
{{Infobox プログラミング言語
| fetchwikidata = ALL
| onlysourced = false
| name = ECMAScript
| released = {{Start date and age|1997}}
| latest release version = ECMA-262 14th Edition (ECMAScript 2023)<ref name="ES2023">{{Cite web
|date=June 2023
|title=ECMA-262. ECMAScript® 2023 language specification. 14th edition, June 2023
|url=https://ecma-international.org/publications-and-standards/standards/ecma-262/
|publisher=[[Ecmaインターナショナル]]
|access-date=2024-03-19
|language=en
}}</ref>
| latest release date = {{Start date and age|2023|06}}
| dialects = [[JavaScript]], [[ActionScript]], [[JScript]], [[QtScript]], [[DMDScript]], [[InScript]]
| typing = [[ダック・タイピング]]、弱い[[動的型付け]]
| website = {{ConditionalURL}}
}}
{{Infobox file format
| name = ECMAScript
| icon = [[ファイル:Crystal source.png]]
| logo =
| screenshot =
| caption =
| extension = <code>.es</code>
| mime = text/javascript{{Efn2|過去には {{IETF RFC|4329}} で「application/ecmascript」とされていたが、互換性のために {{IETF RFC|9239}} で廃止(OBSOLETE)され「text/javascript」に統一された。}}
| type code =
| uniform type =
| magic =
| owner = [[サン・マイクロシステムズ]]<br />[[Ecma International]]
| released = {{Start date and age|1997|6}}
| latest release version = 14th Edition (ECMAScript 2023)
| latest release date = {{Start date and age|2023|6}}
| genre = [[スクリプト言語]]
| container for =
| contained by =
| extended from = [[JavaScript]]
| extended to =
| standard =
| url = {{Cslist
| [https://ecma-international.org/publications-and-standards/standards/ecma-262/ ECMA-262]
| [https://ecma-international.org/publications-and-standards/standards/ecma-402/ ECMA-402]
| [https://ecma-international.org/publications-and-standards/standards/ecma-419/ ECMA-419]
| [https://ecma-international.org/publications-and-standards/standards/ecma-414/ ECMA-414]
| [https://ecma-international.org/publications-and-standards/standards/ecma-290/ ECMA-290](廃止)
| [https://ecma-international.org/publications-and-standards/standards/ecma-327/ ECMA-327](廃止)
| [https://ecma-international.org/publications-and-standards/standards/ecma-357/ ECMA-357](廃止)
}}
}}
{{プログラミング言語}}
'''ECMAScript'''(エクマスクリプト)は、[[Ecmaインターナショナル]]において[[標準化]]された[[JavaScript]]の[[国際規格]]である。また、[[ISO/IEC JTC 1]]においてはISO/IEC 22275:2018{{Efn2|ISO/IEC 16262は、[https://www.iso.org/standard/29696.html ISO/IEC 16262:1998]→[https://www.iso.org/standard/33835.html ISO/IEC 16262:2002]→[https://www.iso.org/standard/55755.html ISO/IEC 16262:2011]と改訂されてきたが、2021年8月時点の最新の[https://www.iso.org/standard/73002.html ISO/IEC 22275:2018 Information technology — Programming languages, their environments, and system software interfaces — * ECMAScript Specification Suite]として、
* ECMA-262, ECMAScript Language Specification
* ECMA-402, ECMAScript Internationalization API Specification
* ISO/IEC 21778, Information technology — The JSON data interchange syntax (Adoption of ECMA-404)
の最新規格を一括して参照するようになった。}}、[[日本産業規格]]においてはJIS X 3060:2000として規格化されている{{Efn2|JIS X 3060:2000は、ISO/IEC 16262:1998(ES1相当)の日本語訳。}}<ref>{{Cite web|和書| url = https://webdesk.jsa.or.jp/books/W11M0090/index/?bunsyo_id=JIS+X+3060%3A2000
| title = JIS X 3060:2000, ECMAScript言語, Information technology -- ECMAScript language specification
| date = 2000-06-30
| accessdate = 2021-08-16
| quote = 対応国際規格:ISO/IEC 16262:1998 (IDT); IDT=identical(一致)
}}</ref>。
__TOC__
==バージョン==
{{更新|date=2022年3月|section=1}}
ECMAScript仕様は、Ecma InternationalにてECMA-262という規格番号で標準化されている。改訂にあたっては版 (edition) が更新されている。
6th editionから、「ECMAScript 2015」仕様の名称に発行年が付加されることになった。以降、ECMAScriptは毎年改訂されることになり、以降特定の版を指す場合は、edition名ではなく年号つきの仕様書名で呼ばれることが推奨されている<ref>{{Cite web |title=Some ECMAScript Explanations and Stories for Dave |url=https://wirfs-brock.com/allen/posts/778 |website=wirfs-brock.com |access-date=2025-01-14 |language=en-US |date=2017-08-31}}</ref>。
{| class="wikitable"
|- style="background:#ccf;"
!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、[[JavaScript Object Notation|JSON]][[ライブラリ]]のサポート、より完全な[[オブジェクト (プログラミング)|オブジェクト]]の[[属性]]の[[リフレクション (情報工学)|リフレクション]]<ref>[http://www.youtube.com/watch?v=Kq4FpMe6cRs JavaScriptの変更, Part 1: EcmaScript 5]</ref>
| Pratap Lakshman, Allen Wirfs-Brock
|-
! 5.1
| 2011年6月<ref>[https://262.ecma-international.org/5.1/ ECMAScript Language Specification - ECMA-262 Edition 5.1]</ref>
| ISO/IEC 16262:2011規格と同様の表記に修正
| Pratap Lakshman, Allen Wirfs-Brock
|-
!6 (2015)
|2015年6月<ref>{{cite web|url=https://262.ecma-international.org/6.0/|title=ECMAScript 2015 Language Specification – ECMA-262 6th Edition|accessdate=2025-03-17}}</ref>
|[[クラス (コンピュータ)|クラス]]、[[モジュール]]、イテレータ、for/ofループ、[[Python]]スタイルのジェネレータ、アロー関数、2進数および8進数の整数リテラル、Map、Set、WeakMap、WeakSet、プロキシ、テンプレート文字列、let、const、型付き配列、デフォルト引数、Symbol、Promise、分割代入、可変長引数
|Allen Wirfs-Brock
|-
!7 (2016)
|2016年6月<ref>{{cite web|url=https://262.ecma-international.org/7.0/|title=ECMAScript® 2016 Language Specification|accessdate=2025-03-17}}</ref>
|冪乗演算子、Array.prototype.includes
|Brian Terlson
|-
!8 (2017)
|2017年6月<ref>{{cite web|url=https://262.ecma-international.org/8.0/|title=ECMAScript® 2017 Language Specification|accessdate=2025-03-17}}</ref>
|非同期関数 ([[async/await]])、SharedArrayBufferとAtomics、String.padStart/padEnd、Object.values/entries、Object.getOwnPropertyDescriptors、関数の引数における末尾のカンマ許容
|
|-
!9 (2018)
|2018年6月<ref>{{cite web|url=https://262.ecma-international.org/9.0/|title=ECMAScript® 2018 Language Specification|accessdate=2025-03-17}}</ref>
|オブジェクトに対するスプレッド構文、非同期イテレーション、Promise.prototype.finally、正規表現への機能追加
| Brian Terlson
|-
!10 (2019)
|2019年6月<ref>{{cite web|url=https://262.ecma-international.org/10.0/|title=ECMAScript® 2020 Language Specification|accessdate=2025-03-17}}</ref>
|Array.prototype.flat/flatMap、Object.fromEntries、String.prototype.trimStart/trimEndメソッドの追加。catchブロックの引数省略を許可。他
|Brian Terlson, Bradley Farias, Jordan Harband
|-
!11 (2020)
|2020年6月<ref>{{cite web|url=https://262.ecma-international.org/11.0/|title=ECMAScript® 2020 Language Specification|accessdate=2025-03-17}}</ref>
|[[Null条件演算子|オプショナルチェイニング演算子]]<code>?.</code>、[[Null合体演算子]]<code>??</code>サポート。BigInt型の追加。動的importサポート。for-in文の順序保証。他
|Jordan Harband, Kevin Smith
|-
! 12 (2021)
| 2021年6月<ref>{{cite web|url=https://262.ecma-international.org/12.0/|title=ECMAScript® 2021 Language Specification|accessdate=2025-03-17}}</ref>
| String.prototype.replaceAllメソッド追加。Promise.any追加。<code>??=</code>、<code>&&=</code>、<code><nowiki>||=</nowiki></code> 演算子追加。数値の区切り文字としてのアンダースコア <code>_</code>サポート。弱い参照WeakRefサポート。
| Jordan Harband, Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
! 13 (2022)
| 2022年6月<ref>{{cite web|url=https://262.ecma-international.org/13.0/|title=ECMAScript® 2022 Language Specification|accessdate=2025-03-17}}</ref>
| Array、String、TypedArrayに対して負数指定可能なatメソッド追加。静的クラスフィールドサポート。プライベートフィールド/メソッドサポート。トップレベルawaitサポート。
| Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|-
! 14 (2023)
| 2023年6月<ref>[https://262.ecma-international.org/14.0/ ECMAScript 2023 Language Specification]</ref>
| 配列操作メソッドの追加、<code>#!</code>([[シバン (Unix)]])のサポート、WeakMapのキーにおけるSymbolの利用。
| Shu-yu Guo, Michael Ficarra, Kevin Gibbons
|}
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の支援をより少ないメモリのデバイスで実行できるよう採用している。
== 文法 ==
{{main|JavaScript#文法}}
== 方言およびその呼称 ==
ECMAScript は、[[ウェブブラウザ]]をはじめとする多くの[[アプリケーションソフトウェア|アプリケーション]]でサポートされている。[[Document Object Model|DOM]]との連携はドキュメントの操作を可能にする。
{| class="wikitable"
|-
!アプリケーション
!呼称
12 ⟶ 176行目:
!対応するECMAScriptリビジョン
|-
|[[Mozilla]]
|[[JavaScript]]
|1.
|ECMA-262
|-
|rowspan="2" | [[Internet Explorer]]
|[[JScript]](IE8まで)
|5.
|ECMA-262 3rd edition
|-
|JavaScript ([[
|11.0
|ECMA-262 5.1 edition
|-
|[[Google Chrome]]<br>[[Opera]]
|JavaScript
|
|ECMA-262
|-
|[[
|JavaScript
|
|ECMA-262
|-
|[[
|JavaScript
|
44 ⟶ 212行目:
|[[.NET Framework|Microsoft .NET]]
|[[JScript .NET]]
|
|ECMA-262 4th草案
|-
|[[Adobe Flash]]
|[[ActionScript]]
|3
|ECMA-262 4th草案
|-
|[[Adobe Acrobat]]
76 ⟶ 244行目:
|1.5
|ECMA-262 3rd edition
|}
== ECMAScript 4 ==
{{See also|JavaScript#JavaScript 2.0}}
ECMAScript 4は過去2回仕様作成が挑戦されたが、仕様がまとまらず、失敗に終わっている。
=== 1回目 ===
2000年〜2003年ごろ行われた。主に、旧[[ネットスケープコミュニケーションズ|Netscape]]社<ref>{{Cite web |title=ECMAScript 4 Netscape Proposal |url=https://www-archive.mozilla.org/js/language/old-es4 |website=www-archive.mozilla.org |access-date=2025-01-14 |date=2003-06-30}}</ref>と[[マイクロソフト]]によって行われたが、意見がまとまらずに、打ち切りとなった。この時の案は[[ActionScript]]へと引き継がれた。
==
2007年〜2008年ごろ、2回目の仕様作成が行われた。大きく機能を追加される予定であったが、意見がまとまらず、[[2008年]][[8月13日]]に、小規模の改善にとどまる、ECMAScript 3.1を進めることとなった<ref>{{Cite web |title=ECMAScript Harmony |url=https://esdiscuss.org/topic/ecmascript-harmony |website=esdiscuss.org |access-date=2025-01-14 |date=2008-08-13}}</ref>{{Efn2|仕様は、http://www.ecmascript.org/docs.php にて公開されている。}}。
以下のような予定があった。
* 大規模・大人数開発のための機能の追加{{要出典|date=2011年2月}}<!--というか具体的に-->
* 型に関する機能の追加{{要出典|date=2011年2月}}<!--これも具体的に-->
* [[ジェネリックプログラミング]]の機能の追加
* ECMAScript 3 が下位互換だが、互換でない仕様が一部に入る{{要出典|date=2011年2月}}<!--これも具体的に-->
* ActionScript 3 の上位互換だが、互換でない仕様が一部に入る{{要出典|date=2011年2月}}<!--これも具体的に-->
== 実装 ==
* [[V8 (JavaScriptエンジン)|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草案の実装
== 脚注 ==
{{脚注ヘルプ}}
=== 注釈 ===
{{Notelist2}}
=== 出典 ===
{{Reflist|2}}
== 関連項目 ==
* [[ECMAScript for XML]] (E4X)
* [[JavaScript Object Notation]] (JSON)
* [[CommonJS]]
* [[TypeScript]]: JavaScriptの構文を保ちつつ、型に関する機能を外部的に追加したプログラミング言語
== 外部リンク ==
{{外部リンクの注意|section=1}}
* [https://262.ecma-international.org/ ECMAScript]
* ECMAScript言語仕様
** [https://www.ecma-international.org/publications/standards/Ecma-262.htm Standard ECMA-262]
*** [https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf ECMA-262 ECMAScript Language Specification 3rd edition (December 1999)]
*** [https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262%205th%20edition%20December%202009.pdf ECMA-262 ECMAScript Language Specification 5th edition (December 2009)]
*** [https://www.ecma-international.org/ecma-262/5.1/index.html ECMA-262 ECMAScript Language Specification 5.1 edition (June 2011)]
*** [https://www.ecma-international.org/ecma-262/6.0/index.html Standard ECMA-262 6th Edition / June 2015 ECMAScript 2015 Language Specification]
*** [https://www.ecma-international.org/ecma-262/12.0/index.html Standard ECMA-262 12th Edition / June 2015 ECMAScript 2021 Language Specification]
** [https://tc39.es/ecma262/ The most accurate and up-to-date ECMAScript Language Specification]
** [https://www.ecma-international.org/publications/standards/Ecma-290.htm Standard ECMA-290 ECMAScript Components Specification (June 1999)]
** [https://www.ecma-international.org/publications/standards/Ecma-327.htm Standard ECMA-327 ECMAScript 3rd Edition Compact Profile (June 2001)]
** [https://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/index.html Under Translation of ECMA-262 3rd Edition(日本語訳)]
{{ECMAScript}}
{{プログラミング言語一覧}}
{{DEFAULTSORT:えくますくりふと}}
[[Category:JavaScript|*]]
[[Category:スクリプト言語]]
[[Category:Ecma]]
| |||