クイックナビゲーション
実行コンテキスト
実行コンテキストとは
実行コンテキストは、次のような構成の環境のいくつかの実行前に、現在の実行可能コードのクイックナビゲーションです: thisポインティング、語彙環境、生成された変数環境。
実行可能コード
上で実行可能コードについて触れたので、あなたはこう疑問に思っているのではないでしょうか:私が毎日書いているコードはすべて実行可能ではないのか?すべてのコード行はグローバル・コンテキストを持っているのでは?実は違います。
なぜなら、JSエンジンは行単位で実行するのではなく、セグメント単位で実行するからです。そのため、プログラムを実行するとき、JS エンジンはコードをセグメントに分割して実行します。各セグメントは実行可能なコードです。
実行可能コードには、グローバルコード、関数コード、eval関数の3種類があります。
つまり、実行コンテキストには3つのタイプがあります:
グローバル実行コンテキスト:グローバル・オブジェクトを作成します。thisはグローバルオブジェクトを指し、1つのプログラムは1つのグローバルオブジェクトしか持ちません。
関数の実行コンテキスト:関数は、実行コンテキストの関数を作成する関数で呼び出され、各関数は、独自の実行コンテキストを持つことになり、関数は、複数のコンテキストを持つことができます this決定に応じて関数の呼び出しを指しています。
eval関数の実行コンテキスト: eval関数を呼び出すと、JSエンジンはeval関数の内部コードの実行コンテキストも作成します。eval関数が直接呼び出された場合、thisは内部関数を指します。
注:eval関数は強力ですが、セキュリティ上のリスクがありますので、使用は控えめにしてください。
注:関数実行コンテキストは
実行スタック
上では、実行コンテキストと実行コンテキストの種類について説明し、次に実行スタックについて説明しました。
そもそも、なぜ実行スタックが必要なのでしょうか?答えは、上記の実行コードの実行順序の管理を容易にするためです。上記の実行コンテキストでは、JSエンジンがセグメント化された実行を発見し、各セグメントは、少なくとも1つの実行コンテキストを持っているので、多くの実行コンテキストは、どのようにプログラムの実行を確保するために、各セグメントは、正確に混乱することなく、彼の実行コンテキストに対応しています。このため、JSエンジンは、スタックを持って、このスタックは、実行スタックです。
では、実行スタックはどのように機能するのでしょうか? プログラムが実行されるとき。最初に遭遇するのはグローバルコードなので、まず最初にグローバル実行コンテキストを作成し、実行スタックの一番下に押し込みます。次に、関数呼び出しに遭遇したら、その関数の実行コンテキストを作成して実行スタックに押し込みます。そして、eval関数呼び出しに遭遇したら、eval関数の実行コンテキストを作成して実行スタックに押し込みます。関数の実行が終了すると、関数の実行コンテキストは実行スタックからポップ・オフされ、破棄されます。したがって、グローバルコンテキストが実行スタックからポップされるのは常にプログラムの実行が終了した後であり、実行スタックが空になるのはプログラムの実行が終了した後です。
まとめ
この記事では、主に実行コンテキストの定義と種類だけでなく、実行コンテキストの管理 - 実行スタック簡単な説明を行うには。実行コンテキストは、日常業務で積極的に使用されることはあまりありませんが、理解した後に混乱のいくつかの関数の実行を減らすことができます。
最後の内容はどうしても間違っています。





