実行コンテキスト


実行コンテキスト


抽象概念
実行コードに指定する環境情報を含むオブジェクト.

Stack, Queue

  • Stack: LIFO (Last In First Out)
  • Queue: FIFO (First In First Out)
  • Stackは、最後に入力されたd、c、b、およびaの順序でデータを抽出することができる.
  • Queueは、最初に入力されたa、b、c、およびdの順序でデータを抽出することができる.
  • 実行コンテキストの動作は、同じ環境でコードを実行するときに必要な環境情報を収集することによってコンテキストを組織し、呼び出しスタックに積み上げ、最上位のコンテキストに関連するコードを実行することによって、コードの環境と順序を保証します.

    実行コンテキストの構成方法

  • グローバルスペース→自動運転
  • eval()関数→推奨しない
  • 関数→最も一般的な実行コンテキスト構成方法
  • ブロック→{}で囲まれたコード内部.ES 6からサポート
  • コンテキストと呼び出しスタックの実行

    // ------------------- (1)
    var a = 1;
    function outer() {
      function inner() {
        console.log(a);
        var a = 3;
        // --------------- (2)
      }
      inner(); // -------- (3)
      console.log(a);
      // ----------------- (4)
    }
    outer(); // ---------- (5)
    console.log(a);
    // ------------------- (6)
  • 実行順:(1)→(5)→(3)→(2)→(4)→(6)

  • 実行プログラム:[グローバルコンテキスト]

  • outerの実行:[グローバルコンテキスト、outer]->(5)

  • 内部実行:[グローバルコンテキスト、outer、inner]->(3)

  • 内部終了:[グローバルコンテキスト、outer]->(2)

  • 外部終了:[グローバルコンテキスト]->(4)

  • プログラムを終了
  • 実行コンテキストの構造


  • 実行コンテキストオブジェクトは、アクティブ化時に3つの情報VariableEnvironmentLexicalEnviornmentおよびThisBindingを収集する.
  • Variable Environment


  • 実行コンテキストを作成するときは、まずVariableEnvironmentに情報を入れ、その環境にコピーしてLexicalEnvironmentを作成し、主にLexicalEnvironmentを使用します.実行中に変更は反映されず、初期状態は維持されます.

  • 内部コンポーネント
  • 現在のコンテキストにおける識別子(変数)
  • について
  • 外部環境情報
  • LexicalEnvironmentのスナップショット(変更を反映するX)
  • Lexcial Environment


  • LexicalEnvironmentの内部は、環境レコードと外部環境リファレンスから構成されています.

  • 環境記録による転送

  • 外部環境参照はスキャンチェーンとスキャンチェーンを形成する
  • thisBinding

  • 識別子表示が必要なターゲットオブジェクト
  • 整理する

  • 実行するコードの環境情報を含むオブジェクト.
  • 実行コンテキストオブジェクトは、アクティブ化時にVariableEnvironment、LexicalEnvironment、ThisBindingの3つの情報を収集します.
  • VariableEnvironmentおよびLexicalEnvironmentは、前のコンテキストを参照したLexicalEnvironmentReference(収集パラメータ名、識別子、関数名など)および外部EnvironmentRecordからなる.
  • 実行コンテキストを作成すると、VariableEnvironmentは初期状態を維持し、LexicalEnvironmentは実行中に変更を反映します.
  • リファレンス

  • 実行コンテキストの設定
  • https://taenami.tistory.com/109
  • https://jinbroing.tistory.com/78
  • https://velog.io/@tess/Execution-Context-Call-Stack