JavaScript: 実行コンテキスト (Aze)

Jan 23 2023
私たちが作成したコードが実行されている間、バックグラウンドで目に見えないプロセスが存在します。Javascript エンジンはコードを読み取って実行する際、2 つのステップで実行します。

私たちが作成したコードが実行されている間、バックグラウンドで目に見えないプロセスが存在します。Javascript エンジンがコードを読み取って実行するときは、2段階で行われます。実行コンテキストと呼ばれるこの一般的なプロセスには、作成フェーズと実行フェーズとして説明したように2 つのステージがあります。

作成フェーズと呼ばれる最初の段階では、 JS エンジンはある種のコードの習熟と準備作業を行います。コンテキストを作成し、変数と関数を保存するためにメモリを割り当てます。次の段階である実行フェーズでは、JS エンジンは前述の値をすでに使い慣れている変数に同化し、関数を呼び出します。

それは、ある種の食べ物を準備することにたとえることができます。私たちは、準備する食べ物にどのような物資が必要かを最初から知ります(創造段階)。

作成フェーズ

次に、物資の量を決定し、食料を準備するアクションを開始します(実行フェーズ)。

実行フェーズ

コードが初めて実行されるとき、グローバル実行コンテキストが最初に作成され、前述のフェーズが実行されます。次に、関数が存在して呼び出される場合、関数実行コンテキストが作成され、両方のフェーズが実行されます。

実際には、これらすべてを少しのコードで確認できます。

  1. このコードがエンジンによって読み取られると、最初にグローバル コンテキストが作成されます。
  2. グローバル実行コンテキスト

2. お気づきかと思いますが、getTechStack関数のtech変数では何も行われていません。これは、変数がgetTechStack関数内にあるためです。9 行目のようにこの関数が呼び出された後、新しい関数コンテキストが作成され、このコンテキストで 2 つのフェーズが再度実行されます。その場合にのみ、tech変数は他の変数と同様に扱われます。

関数実行コンテキスト

グローバル コンテキストとは異なり、関数コンテキストのグローバル オブジェクトは、関数のパラメーターを参照する引数オブジェクトと等しくなります。

したがって、グローバルコンテキスト以外の関数が呼び出されるたびに、新しいコンテキストが作成され、同じ手順が繰り返されます。

読んでくれてありがとう。:)

その他のトピック: