JavaScriptは、ECMAScriptの標準仕様に基づいて年々更新されています。JavaScript自体に明示的な「バージョン指定」は存在せず、使用する環境(ブラウザやエンジン)に応じて対応状況が異なります。
この記事では、JavaScriptの標準仕様である「ECMAScript」の基礎から、主要バージョンの特徴、各ブラウザの対応状況を確認する方法についてわかりやすく解説します。
目次
閉じる
1.JavaScriptの標準仕様であるECMAScriptとは?
ECMAScript(エクマスクリプト)とはJavaScriptの標準仕様であり、言語の機能や構文、挙動を定めた国際的な技術規格のことです。
JavaScriptという名称は、もともとNetscape社が開発したスクリプト言語に由来しますが、言語の仕様そのものは1997年にECMA International(欧州電子計算機工業会)によって「ECMA-262」として標準化されました。この標準仕様がECMAScriptです(参照:ECMAScript® 2026 Language Specification|ECMA International)。
ECMAScriptの策定と更新は、ECMA Internationalの技術委員会「TC39(Technical Committee 39)」によって進められており、JavaScriptの他にもActionScriptやJScriptといった言語もECMAScriptに準拠しています。ただし、ECMAScriptとJavaScriptはほぼ同義として扱われることが一般的です。
例えば、開発者が日常的に利用するlet・const・アロー関数といった機能は、すべてECMAScriptのバージョンアップによって導入された仕様です。JavaScriptが継続的に進化しているのは、ECMAScriptの更新に沿って各ブラウザが新機能に対応しているからです。
また、ECMAScriptは年次で更新されており2015年の「ECMAScript 2015(ES6)」以降は、「ES2016(ES7)」「ES2017(ES8)」のように毎年新しいバージョンがリリースされる体制となっています。各バージョンのドラフト仕様は、TC39のGitHubや公式サイト上で公開されています(参照:TC39|GitHub)。
2.JavaScriptの主なバージョン一覧と特徴
JavaScriptの進化はECMAScriptのバージョンごとの仕様改定によって段階的に進んでおり、バージョンごとの特徴を把握することで、使用可能な機能や記法の違いを理解しやすくなります。
以下に、代表的なバージョンとその主な機能を整理します。
バージョン | 略称 | 説明 |
---|---|---|
ECMAScript 1 | ES1 | JavaScriptの標準仕様として初めて公開。基本的な構文やオブジェクトが定義された |
ECMAScript 2 | ES2 | ISO準拠のための編集的修正。機能面での大きな追加はなし |
ECMAScript 3 | ES3 | 正規表現、例外処理、厳密な等価演算子(===)などが導入され、広く普及。旧ブラウザとの互換性あり |
ECMAScript 4 | ー | クラスやモジュールなど多くの新機能を提案したが、複雑さなどから標準化されず破棄 |
ECMAScript 5 | ES5 | strict mode、JSON対応、Object.defineProperty、配列メソッド追加など、近代JavaScriptの基礎を確立 |
ECMAScript 5.1 | ES5.1 | ECMAScriptをISO/IEC 16262に準拠させるための小規模修正 |
ES2015/ES6 | let / const、アロー関数、クラス、モジュール(import/export)、Promiseなどが導入され、大規模アップデートとなった | |
ES2016/ES7 | Array.prototype.includes、指数演算子(**)を追加 | |
ES2017/ES8 | async/await、Object.entries / Object.values、文字列パディングなどを追加 | |
ES2018/ES9 | Promise.prototype.finally、非同期イテレータ(for await...of)、スプレッド構文のオブジェクト対応など | |
ES2019/ES10 | Array.prototype.flat、Object.fromEntries、trimStart / trimEndなどを追加 | |
ES2020/ES11 | ??(null合体演算子)、?.(オプショナルチェーン)、globalThisなど、記述簡略化に寄与する構文が追加 | |
ES2021/ES12 | String.prototype.replaceAll()、Promise.any()、論理代入演算子(&&=、||=、??=)、数値区切り文字(_)などが追加された | |
ES2022/ES13 | at()、top-level await、Error cause、Object.hasOwnなどが追加 | |
ES2023/ES14 | findLast()、findLastIndex()、ハッシュバング(#!)のサポートなど、細かな強化 | |
ES2024/ES15 | ・Object.groupBy() / Map.groupBy():イテラブルをキー関数で分類してオブジェクトまたは Map を生成する静的メソッド ・Setに対するメソッド拡張(.union(), .intersection(), .difference() など) JavaScriptの関数的記法によるデータ操作性が向上している |
関連記事
JavaScriptのalert完全ガイド|自動で閉じる方法や非推奨理由、alert以外の方法を紹介
JavaScriptの正規表現|フォーマットチェックやmatchなど実務で使える正規表現一覧
3.ブラウザごとのJavaScriptバージョン対応状況を確認する方法
JavaScriptの新機能を使用する際は、対象ブラウザがその機能に対応しているかを事前に確認しましょう。業務システムや幅広いユーザー層を対象とするWebサービスでは、ブラウザ対応状況を踏まえた機能選定が必要不可欠です。
JavaScriptの新しい構文やAPIは、ECMAScriptの仕様として追加された後、各ブラウザのJavaScriptエンジンで段階的に実装されます。しかし、すべてのブラウザが同時に対応するわけではありません。古いブラウザや特定のデバイス環境では、最新の機能が未対応のケースもあります。
JavaScriptの構文や機能の対応状況は、「Can I use」で確認できます。使いたい機能をキーワードで検索すると各ブラウザの対応状況が一覧で確認できます。例えば、アロー関数が使用可能かを調べたい場合、以下の手順で確認します。
https://caniuse.com/にアクセス
検索欄に"arrow"や"arrow functions"と入力
「Arrow functions」の項目が表示される
各ブラウザ(Chrome、Edge、Firefox、Safari、IEなど)の対応状況が一覧表として表示される
緑:対応済み
赤:非対応
関連記事
Node.jsとは?JavaScriptでサーバーサイド開発をするための環境構築方法や開発利用シーンも解説
4.JavaScriptのバージョンを指定して使う方法はあるか?
JavaScript自体にはバージョンを直接指定して実行する仕組みは存在しませんが、使用する構文や機能の制限・変換は、トランスパイラやビルドツールを用いることで実現可能です。
JavaScriptは、HTMLの<script>タグで実行される場合、ECMAScriptのどのバージョンを使用するかを明示的に指定する方法は標準として用意されていません。そのため、開発時に任意のバージョンに対応したコードに変換したい場合は、Babelなどのトランスパイラを利用します。
Babelの@babel/preset-envを用いて、新しいバージョンのJavaScriptを古いバージョンに変換して、古いブラウザでも実行できるようにします。例えば、次のような設定で「IE11まで対応するように」ES6+のコードをES5へ変換できます。
{ "presets": [ ["@babel/preset-env", { "targets": { "ie": "11" } }] ] } |
このように、実際にはJavaScriptそのものにバージョンを明示するのではなく、「出力されるコードの互換性レベルを設定する」という考え方になります。
関連記事
TypeScriptとJavaScriptの違い【初心者向け】互換性や変換方法など徹底解説
TypeScriptでできること | JavaScriptとの違いや使われる理由・将来性をわかりやすく解説
5.まとめ
JavaScriptはECMAScriptという標準仕様に基づいて年々進化しています。開発者にとっては、プロジェクトの対象ブラウザや実行環境に応じて、どのバージョンまでの機能が使用可能かを正確に把握しておくことが不可欠です。
今後もECMAScript仕様は継続的に更新されていくため、Webエンジニアやコーダーは、変化に対応する知識と調査スキルをアップデートしていく必要があります。
安定した開発と継続的な保守を両立するためにも、JavaScriptのバージョンごとの特性と対応環境を正しく理解し、実装に活かしていきましょう。
本記事が皆様にとって少しでもお役に立てますと幸いです。
「フリーランスボード」は、数多くのフリーランスエージェントが掲載するITフリーランスエンジニア・ITフリーランス向けの案件・求人を一括検索できるサイトです。
開発環境、職種、単価、稼働形態、稼働日数など様々な条件から、あなたに最適なフリーランス案件・求人を簡単に見つけることができます。
単価アップを目指す方や、自分の得意なスキルを活かせる案件に参画したい方は、ぜひ「フリーランスボード」をご利用ください。
自身に最適なフリーランスエージェントを探したい方はこちらよりご確認いただけます。