Javascript Yellow – Photo by Joseph Gruenthal on UnsplashECMAScript は言語仕様で、Javascript ではこの仕様に従って実装されています。 基本的に、新バージョンには追加すべき新機能のリストが含まれています。
たとえば、新しい ECMAScript バージョンには、新しい関数があります。
これにより、最終的に関数で 2 つの数字を足すことができます – これは便利な機能ではないと思いますが、例のために我慢してください🙌
const result = add(12, 4);
console.log(result);
これが決定したら、すべての Javascript インタプリタがこの新機能を実装することになります。
Javascript インタープリター
Javascript インタープリターとは、Javascript コードを読み込んで実行するプログラムです。 Javascript をサポートするすべてのブラウザは、Javascript インタープリタです。
ブラウザ以外にも、Javascript インタープリタが存在します。 NodeJS は、ブラウザの外側で JavaScript を実行できるインタープリターの主要な例です。 NodeJS は、Javascript を読み込んで実行する (OS に API を提供する) ので、インタープリターです。
誰もが自分のブラウザをアップデートするわけではなく、すべてのブラウザが同じ Javascript 機能をサポートしているわけではありません。 そして、ここが面倒なところです。
最新の ECMAScript のバージョンは ES10 です。 しかし、すべてのブラウザがこの新しい ES バージョンをサポートしているわけではなく、新しい機能を実装する必要があります。
さらに、ブラウザのバージョンが古い人がたくさんいるので、すべてのユーザーが新しい ES10 機能を実行できるまでにしばらく時間がかかる可能性があります。
ES バージョン
少し回り道をして、ES バージョンについて説明します。
前のセクションで述べたように、ECMAScript の最新バージョンは ES10 です。 さて、ECMAScript のバージョンに関しては、実は命名規則がありません。 ES10 は ECMAScript2019 や ES2019 とも呼ばれます。
さらに、言語に対する最後の大きな変更は 2015 年に登場した ES6 で、これは ES2015 とも呼ばれることがあります – そう、混乱しますよね😌
ES6 以降は言語に対する小さな変更のみなので、すべてのバージョンで ESNext とも呼ばれることもあります。
Javascript Transpilers
すべてのブラウザが最新の ES10 機能をサポートしていない問題を覚えていますか? 解決策があります。 トランスパイラーです!
Babel は、Javascript トランスパイラーの一例です。 Babel は、新しい Javascript バージョンを古いバージョンに変換します。 この方法では、新しい派手な ES10 機能を使用し、Babel に広くサポートされている ES5 バージョンにトランスパイルさせることができます。
NodeJS とブラウザの違い
NodeJS とブラウザはどちらも Javascript インタプリタです。 ブラウザのバージョンとノードのバージョンによって、ECMAScript の同じバージョンをサポートすることができます。
しかし、Node はコンピュータ上で直接実行されます。 これは、ブラウザで動作しない Node にバンドルされている多くのライブラリがあることを意味します。
たとえば、NodeJS では、新しいファイルを作成することができます。 ブラウザでは、これは大きなセキュリティ リスクとなるので、不可能です。
そのため、同じ ECMAScript バージョンで書かれた NodeJS プログラムは、同じバージョンをサポートするブラウザではまだ実行されません。