JavaScript って何?
- JavaScript とは?
- JavaScript と Java の関係は?
- ECMAScript とは?
- JavaScript のバージョン
- ES5 の新機能
- ES5.1 の新機能
- ES2015(ES6) の新機能
- ES2016(ES7) の新機能
- ES2017(ES8) の新機能
- ES2018(ES9) の新機能
- ES2019(ES10) の新機能
- ES2020(ES11) の新機能
- ES2021(ES12) の新機能
- ES2022(ES13) の新機能
- ES2023(ES14) の新機能
- ES2024(ES15) の新機能
JavaScript とは?
Netscape Communications 社が開発したプログラミング言語です。1995年に同社の Netscape Navigator 2.0 で初めてサポートされ、Microsoft 社の Internet Explorer 3.0 でも同様の機能 JScript の名前でサポートされました。JavaScript を用いることにより、ブラウザで表示する Webページ上で、フォームに入力した値をチェックしたり、時刻を表示したり、ゲームなどを実装することも可能となります。
当初はブラウザ上で動作することを主眼とした言語でしたが、現在では Node.js などサーバサイドのプログラミング減としても利用されています。
JavaScript と Java の関係は?
JavaScript とよく似た名前のプログラミング言語に、Sun Microsystems 社が開発した Java があります。Java と JavaScript は名前もよく似ていますし、いずれも C 言語を祖先として生まれた言語なので記述もよく似ていますが、まったく別物です。英語とドイツ語くらいの違いがあります。
JavaScript は元々 LiveScript という名前で開発されていましたが、Java が流行しはじめたことや、Netscape 社と Sun Microsystems 社が技術提携したこともあり、JavaScript と名前を変えたようです。
ECMAScript とは?
当初の JavaScript は Netscape 社が開発を進めていましたが、欧州電子計算機工業会(ECMA: European Computer Manufacturers Association)が標準化を進めることとなり、ECMAScript (ECMA-262)とも呼ばれるようになりました。ECMA はその後、欧州のみでなく国際的な標準化機関となり、Ecma International に名称を変更しましたが、現在でも ECMAScript の標準化を進めています。
JavaScript のバージョン
JavaScript (ECMAScript) には次のようなバージョンがあります。
バージョン | 公開日 | 対応ブラウザ |
---|---|---|
JavaScript 1.0 | 1996年3月 | Netscape 2.0 / IE3.0 |
JavaScript 1.1 | 1996年8月 | Netscape 3.0 |
JavaScript 1.2 | 1997年7月 | Netscape 4.0-4.05 |
JavaScript 1.3 | 1998年10月 | Netscape 4.06-4.7 / IE4.0 |
ECMAScript には次のようなバージョンがあります。ES6 からは、ES2015 のように表記するようになりました。
バージョン | 略称 | 参照 | 公開日 |
---|---|---|---|
ECMAScript 1st Edition | ES | 1997年6月 | |
ECMAScript 2nd Edition | ES2 | 1998年6月 | |
ECMAScript 3rd Edition | ES3 | 1999年12月 | |
ECMAScript 4th Edition | ES4 | (放棄) | |
ECMAScript 5th Edition | ES5 | 2009年12月 | |
ECMAScript 5.1th Edition | ES5.1 | PDF, HTML | 2009年12月 |
ECMAScript 2015 | ES2015(別名ES6) | PDF, HTML | 2011年6月 |
ECMAScript 2016 | ES2016(別名ES7) | PDF, HTML | 2016年6月 |
ECMAScript 2017 | ES2017(別名ES8) | HTML | 2017年6月 |
ECMAScript 2018 | ES2018(別名ES9) | HTML | 2018年6月 |
ECMAScript 2019 | ES2019(別名ES10) | HTML | 2019年6月 |
ECMAScript 2020 | ES2020(別名ES11) | HTML | 2020年6月 |
ECMAScript 2021 | ES2021(別名ES12) | HTML | 2021年6月 |
また、JavaScript の国際化対応として下記が定義されています。
バージョン | 参照 | 公開日 |
---|---|---|
ECMA-402 1st Edition | HTML | 2012年12月 |
ECMA-402 2nd Edition | HTML | 2015年6月 |
ECMA-402 3rd Edition | HTML | 2016年6月 |
各バージョンのブラウザ対応状況は下記を参照してください。
- ES5: http://kangax.github.io/compat-table/es5/
- ES6: http://kangax.github.io/compat-table/es6/
- ES2016~: http://kangax.github.io/compat-table/es2016plus/
ES2016(ES7)以降で追加された機能の一覧は下記で公開されています。
ES5 の新機能
- ストリクトモード(strict)
- ゲッター(getter)とセッター(setter)
- オブジェクトの最後の属性の後ろにカンマ
- JSON文字列の変換
- trim()
- Object オブジェクトのメソッド強化
- Array オブジェクトのメソッド強化
ES5.1 の新機能
ES2015(ES6) の新機能
- クラス (class)
- テンプレートリテラル (`Hello ${name}`)
- モジュール (import, export)
- アロー関数 (=>)
- デフォルト引数 (function(x=0, y=0))
- 可変長引数 (function(x, y, ...arg))
- 定数 (const)
- 局所変数 (let)
- for of ループ (for item of items)
- Map オブジェクト
- Set オブジェクト
- 配列関数 (from(), of())
- 分割代入 ([x, y] = [10, 20])
- スプレッド構文 (...args)
- 型付き配列 (Uint8Array, ...)
- シンボルオブジェクト (Symbol)
- 8進数(0o)と2進数(0b)
- 言語依存フォーマット (NumberFormat())
- 非同期処理 (Promise)
ES2016(ES7) の新機能
ES2017(ES8) の新機能
- オブジェクト参照 (object.values(), object.entries())
- パディング (string.padStart(), string.padEnd())
- プロパティ記述子参照 (object.getOwnPropertyDescriptors())
- 関数末尾のカンマ (,)
- 非同期処理(async, await)
- 共有メモリ (SharedArrayBuffer) ... Meltdown and Spectre対応としてすべてのブラウザで一時無効化
ES2018(ES9) の新機能
- テンプレートリテラルの改善(\uの扱い)
- オブジェクトのスプレッド構文とレスト構文 (...obj)
- 正規表現のsフラグ (/.../s)
- 正規表現の名前付きキャプチャグループ (?<...>)
- 正規表現の前方マッチ条件検索 ((?<=...), (?<!...))
- 正規表現のUnicodeプロパティマッチ (\p{...})
- Promiseのfinally構文
- Promiseのfor await (... of ...)構文
ES2019(ES10) の新機能
- catch引数の不要化
- Symbol.description
- JSON superset
- Well-formed JSON.stringify
- function.toString() でコメントも文字列化
- Object.fromEntries()
- string.trimStart()と string.trimEnd()
- array.flat() と array.flatMap()
ES2020(ES11) の新機能
- 任意精度整数(BigInt)
- for-in ループにおける順序保証
- ヌル合体(Nullish Coalescing)演算子(??)
- オプショナル連結(Optional Chaining)(?)
- globalThis
- string.matchAll()
- ダイナミックインポート(Dynamic Import)
- export * as ns from module 構文
- import.meta
- Promise.allSettled()
ES2021(ES12) の新機能
ES2022(ES13) の新機能
「とほほのES2022入門」を参照してください。
ES2023 の新機能
「とほほのES2023入門」を参照してください。
ES2024 の新機能
「とほほのES2024入門」を参照してください。
ES2025 の新機能
「とほほのES2025入門」を参照してください。