Javascriptのグローバルコンテキストを徹底的に理解する

1208 ワード

1定義
コントローラがECMAScript実行可能なコードに移るたびに、実行コンテキストに入ります.実行コンテキスト(略称-EC)は、ECMA-262規格の抽象概念であり、実行可能コード概念と区別するために使用されます.
標準仕様は、ECの正確なタイプと構造を技術的に実現する観点から定義していません.これはECMAScriptエンジンを具体的に実現する際に考慮すべき問題です.
アクティブな実行コンテキストグループは、論理的にスタックを構成する.スタックの下部は常にグローバルコンテキストであり、上部は現在(アクティブ)の実行コンテキストである.スタックは、ECタイプがコンテキストに入り、終了するときに変更される(押し入れまたはポップアップ).
2グローバルコード
グローバルコードにはFunction内のコードは含まれていません.
初期化(プログラム起動)段階では、ECStockはこうです.
ECStack = [
  globalContext
];
3関数コード
Funion関数コード(全タイプのfuntions)に入ると,ECStockは新しい要素に押し込まれる.具体的な関数コードは内部関数コードを含まないことに注意したい.下記のように、関数を自分で調整する方式を再帰させます.
(function foo(bar) {
 if (bar) {
 return;
}
foo(true);
})();
ECStockは以下のように変更される.
//初めてのfooの起動
ECStack = [
 functionContext
globalContext
];
//fooの再帰的起動呼び出し
ECStack = [
 functionContext – recursively
 functionContext
globalContext
];
returnのたびに、現在の実行コンテキストを終了し、それに応じてECStockがイジェクトされ、スタックポインタが自動的に位置を移動する.これは典型的なスタック実装形態である.投げられた例外がカットされていない場合は、1つまたは複数の実行コンテキストから終了することもあります.関連コードの実行が終わったら、ECStockはグローバルコンテキスト(global context)だけを含んで、アプリケーション全体が終わるまでです.
本文のほとんどの内容は以下の通りです.http://www.cnblogs.com/TomXu/...