ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
Netscape Communicationsが開発したスクリプト言語JavaScriptを、Ecma Internationalが標準化したもの。ECMA-262。
ECMA以外にISO/IECやJISでも標準化されている。
元々はNetscape Navigator用に開発された、Webブラウザー用のスクリプト言語がJavaScriptである。言語としての具体的な仕様はJavaScriptを参照のこと。
後にInternet Explorerにも同等品が搭載されたが、相互に非互換があり、どちらか一方でしか動かないという問題を生んだため、スクリプトの標準化が行なわれた。こうして作られたのが標準化されたJavaScriptが「ECMAScript」である。
4th editionあたりでは一度は紛糾したが、その仕様変更を部分的に導入した5th、6thは無事に策定され、6th以降は策定された西暦年を冠するようになり、毎年6月に新しい版が公開されている。
元々のJavaScriptをNetscape Navigatorから引き継いだMozilla Firefoxも今ではECMAScriptに切り替わっており、かくして現在「JavaScript」と呼ばれて使われている言語は、実際は例外なく「ECMAScript」である。
上記のような経緯により、現在JavaScriptと呼ばれるものはECMAScriptであり、Ecma Internationalの技術委員会(technical committee)であるTC39によって管理されている。
紆余曲折の末、6th editionとも呼ばれる2015(平成27)年6月リリースの版(ECMAScript 2015)以降は、毎年6月に新板が公開されている。
仕様は年1回の更新だが、その仕様はそれより前にGoogle ChromeやMozilla Firefoxなどに実装されるため、Safariという残念を無視すれば仕様が公開される頃には最新の仕様が使えることが多い。
初版。JavaScript 1.1ベース。
言語仕様に変更はないが、ISO/IEC 16262がリリースされたため、ISOへの準拠。
JavaScript 1.3相当。
正規表現、文字コードの扱いのUnicode化、try/catch例外処理構文の導入など。
議論が紛糾し、策定されることなく放棄された。
Adobe、Mozillaなどの陣営は4th editionを推したが、大幅な仕様変更となるためMicrosoft、Yahoo!などの陣営と対立、最終的に標準化は断念された。
このうちのいくつかは後継の5th editionの基礎となり、また別の幾つかはその次6th edition(コードネームECMAScript Harmony)の基礎となった。
「strictモード」として、仕様が曖昧な部分で起こりうるエラーを回避するための追加仕様を導入した。
getter/setter機能、JSONライブラリーのサポートなどを追加。
JavaScript 1.7〜1.8相当の仕様を導入。
これ以降、従来と大幅に言語仕様が変更されている。互換性は維持しつつも、JavaScriptの根本的な設計ミスを少しでも改善し、同時に最先端の言語にしていこうという努力がつぎ込まれている。
class、Modules、iterator、Generator、for...of構文ループ、Map、WeakMap、Set、WeakSet、アロー関数、テンプレートリテラル(テンプレート文字列)、Symbol、Promise。Proxyオブジェクトといった昨今のプログラミング言語でのトレンドが導入された。
変数まわりも大きく変化しており、varに代わる新仕様としてletとconstが導入されたことが目立つほか、型付き配列、分割代入、関数の可変長引数などが可能になり、2進数および新しい8進数の整数リテラル(0bおよび0o)に対応した。
ECMAScript 2015のバグ修正が主だが、新機能として、Array.prototype.includesと冪乗(累乗)演算子 ** が導入されている。
Object.values()とObject.entries()、非同期関数(async/await)などが導入された。
スプレッド構文、Async Iteration(非同期イテレーション)などの導入。
Array.prototype.flat()メソッドおよびflatMap()メソッド、Object.fromEntries()メソッドなどの導入。
オプショナルチェイニング(Optional chaining)演算子、いわゆるnull条件演算子 ?. と、null合体演算子 ?? の追加。具体的な仕様は他の近代的な言語と同様である。
BigIntオブジェクトの追加など。
大きな数値を_区切りで書けるようになった(10進数だけでなく16進数なども可)。
String.prototype.replaceAll()、Promise.any()、弱参照を生成するWeakRefsの追加。
??=、||=、\&=演算子の追加。a??=bはaがundefinedの場合にaにbを代入する演算子である。
Array、String、TypedArray に .at() メソッドの追加(配列記号[}と同様の機能だが、負の整数を指定すると末尾からの参照機能が使える)。
ES2017で追加された非同期関数(async/await)の改良。トップレベルに限り、ラッパーとしてのasync関数なしでもawaitが使えるようになった。
ES2015で追加されたclassの改良。プライベートのメソッドやフィールドを作成可能となった(プライベートなものは接頭辞として#を付ける。宣言だけでなく使用時にも#が必要)。静的フィールドのためのstaticを追加。
Object.prototype.hasOwnProperty.call()と同様の機能を持つObject.hasOwn()メソッド、Error.cause、正規表現にマッチインデックス機能(/dフラグ)の追加。
配列の非破壊操作メソッド(toSorted(), toReversed()、toSpliced()、with())の追加。
Arrayを後ろから検索するメソッド(findLast()、findLastIndex())の追加。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます