詳しいコンテンツについては、 Enjoytodayをご覧くださいhttps://www.enjoytoday.cn/2022/11/14/js%E4%B8%AD%E5%A6%82%E4%BD%95%E7%90%86% E8 %A7%A3%E6%89%A7%E8%A1%8C%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC%8Cjs%E6%9C%89%E5% 93 %AA%E5%87%A0%E7%A7%8D%E6%89%A7%E8%A1%8C%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC% 9F /
実行コンテキストは JS において比較的重要な概念であり、現在の関数と変数が配置されている実行コンテキストによって、現在の変数とオブジェクトがどのデータにアクセスできるかが直接決まります。一般に、実行コンテキストは実行領域に応じて 2 つのタイプに分類できます。
- グローバル実行コンテキスト
- 関数実行コンテキスト
実行コンテキスト
グローバル実行コンテキスト
一般に、グローバル実行コンテキストは最も外側の実行コンテキストであり、常に実行スタックの最下位にあり、オブジェクトはwindow
グローバル実行コンテキストのオブジェクトであることがわかります。したがって、定義されたすべてのvar
グローバル変数と関数は、window
対応するプロパティとメソッドにアクセスできます。グローバル実行コンテキストは、ページが自動的に開かれたときに作成され、ページが閉じるまでリサイクルされます。
関数実行コンテキスト
上記のようにJS
実行は順番に実行されますJS
が、開始時に実行コンテキストのスタック構造が作成され、同時にスタックの一番下にグローバル実行コンテキストが作成され、順番に実行されます。このとき、関数を実行する必要がある場合、JS
対応する関数実行コンテキストが作成されてスタックにプッシュされ、関数の実行完了後に関数実行コンテキストがスタックからポップされます。
var a=1;//1.进入全局执行上下文环境
function outter(){
var b=2;
function inner(){
var c=3;
console.log(a+b+c);
}
inner();//3.进入inner函数上下文环境
}
outter();//2.进入outter函数上下文环境
上記のコードは、実行コンテキストを導入する比較的一般的なコードです。上に示したように、JS
実行が開始されると、グローバル実行コンテキストが作成され、その後、outter()
関数を実行すると関数実行コンテキストの作成がトリガーされ、outter
サブ関数実行コンテキストが内部的に作成されますinner()
。コンテキストの作成と破棄:
- ページを開き、
JS
コードの実行時にグローバル実行コンテキストを作成します。 outter()
関数を呼び出してoutter()
関数実行コンテキストを作成する- 実行
outter
関数を実行し、内部関数inner()
function を呼び出し、inner()
関数実行コンテキスト環境を作成します。 inner()
関数の実行後、inner
関数の実行コンテキストを破棄します。outter()
関数の実行後、outter
関数の実行コンテキストを破棄します。- 現在のページを閉じて、グローバル実行コンテキストを破棄します。
実行コンテキストの構成
実行コンテキストは通常、変数環境と字句環境で構成されます。変数環境は、グローバル変数、グローバル関数、または関数実行コンテキストの関数変数部分として理解できます。字句環境は主に、JS コード実行の呼び出しチェーン、つまりコード スコープです。