Open5

イベントループとプロミスチェーンで学ぶJavaScriptの非同期処理

Taiki UejoTaiki Uejo

JavaScriptが実行される環境とECMAScriptの関係

環境というのはJavaScriptが実行される環境のこと。以下のようにブラウザとランタイムで別れる。

  • ブラウザ環境 : Chrome, Safari, Firefox など
  • ランタイム環境 : Node, Deno など

そして、環境に埋め込まれたJavaScript エンジンがECMAScript という仕様を実装していると。ブラウザのV8エンジンとNodeやDenoにも利用されていると。通りで一緒の機能が使えるわけだ。

Taiki UejoTaiki Uejo

APIは環境が提供するもの

fetchやsetTimeoutやら。これらは環境が独自に定義する。以下はこの本でかなり重要な箇所のうちの一つだ。

重要なので再確認しますが、API というのは 環境に特有の機能 であり、ECMAScript の一部ではありません。

Taiki UejoTaiki Uejo

ブラウザAPIとランタイムAPIの互換性

そもそもブラウザの方が歴史は古いため、ランタイムのAPIなどはブラウザ側のAPIから輸入しているわけ。

それらの互換性は結構あるらしく、なぜかというと、サーバーサイドもクライアントと同じように書けるようにするのがモチベーションの一つだから。

ただ、fetchやsetTimeoutなどブラウザと微妙に異なるため全く同じだと思わないこと。