JavaScript 実行コンテキスト は、プログラム実行中にコードがどのように解釈され、実行されるかを説明する重要な概念です。関数呼び出しまたはコード ブロックの実行ごとに実行コンテキストが作成され、コードの実行中にすべての変数、オブジェクト、関数のスコープが制御されます。
実行コンテキストとは何ですか?
実行コンテキストは、JavaScript コードの実行中に作成される環境です。これは、特定の関数変数、オブジェクト、関数のデータを保存するコンテナーのように機能します。基本的に、実行コンテキストは JavaScript エンジンに変数と関数の検索場所とそれらの実行方法を指示します。
実行コンテキストの種類
実行コンテキストには主に 3 つのタイプがあります:
-
グローバル実行コンテキスト (GEC): スクリプトが初めて実行されるときに、グローバル実行コンテキストが作成されます。 一度だけ作成されます には、グローバル オブジェクト (ブラウザーのウィンドウなど) とこのバインディングが含まれます。 GEC は、スクリプト全体の実行が完了するまで終了しません。
-
関数実行コンテキスト (FEC): 関数が呼び出されるたびに、新しい実行コンテキストが作成されます。各関数には独自の実行コンテキストがあり、独自のスコープ、変数、およびこのバインディングが含まれます。
-
Eval 実行コンテキスト: eval() 関数が使用されると、新しい実行コンテキストが作成されます。ただし、コードの可読性とセキュリティに問題が生じる可能性があるため、eval() の使用は一般的に推奨されません。
実行コンテキストのコンポーネント:
実行コンテキストは通常、次の 3 つの主要な部分で構成されます。
-
変数オブジェクト (VO) / 字句環境: すべての変数、関数宣言、関数引数を保存します。
1 2 3 4 5 6 7 8 | console.log(a);
var a = 5;
function myFunction() {
console.log(b);
var b = 10;
}
myFunction();
|
ログイン後にコピー
- スコープ チェーン: スコープ チェーンは、現在の実行コンテキストから前のコンテキストにすべての変数と関数にアクセスできるようにするチェーンです。これにより、どの変数がどこにあるかが決まります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var globalVar = "I'm Global" ;
function outerFunction() {
var outerVar = "I'm in outer function" ;
function innerFunction() {
var innerVar = "I'm in inner function" ;
console.log(globalVar);
console.log(outerVar);
}
innerFunction();
}
outerFunction();
|
ログイン後にコピー
-
このキーワード バインディング: これは特別なキーワードであり、実行コンテキストによって異なります。グローバル実行コンテキストでは、これはグローバル オブジェクトを指しますが、関数実行コンテキストでは、関数の呼び出し方法に応じて異なります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | console.log(this);
var myObject = {
name: "JavaScript" ,
sayName: function () {
console.log(this.name);
}
};
myObject.sayName();
function MyConstructor() {
this.prop = "Property" ;
}
var obj = new MyConstructor();
console.log(obj.prop);
|
ログイン後にコピー
実行コンテキストのライフサイクル:
実行コンテキストのライフサイクルは 3 つのフェーズに分かれています:
-
作成フェーズ: このフェーズでは、実行コンテキストが作成され、スコープ チェーン、変数オブジェクト、および this などのすべての重要なコンポーネントが作成され、初期化されます。
-
実行フェーズ: このフェーズでは、コードが実行されます。つまり、変数に値が割り当てられ、関数が実行されます。
-
ガベージ コレクション: 実行コンテキストの終了時に、不要になった場合はメモリから削除され、関連するリソースが解放されます。

結論
実行コンテキストは、コードの実行方法を決定する JavaScript の基礎です。変数、関数、スコープを適切に管理できます。実行コンテキストを正しく理解すると、JavaScript コードの機能と実行ステップをよりよく理解して管理することができます。
以上がJavaScript 実行コンテキストに関する詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。