JavaScript.js#7実行コンテキストとモジュール


実行コンテキストは、JavaScriptを実行するときに作成される実行単位です.
コンテキスト概念の実行
ECMAScriptでは,実行可能コンテキストは実行可能コードの抽象概念であり,実行可能JavaScriptコードブロックが実行される環境と見なすことができる.
ECMAScriptには3つのケースがあります.
  • グローバルコード
  • eval()関数によって実行されるコード
  • 関数でコードが実行される場合、
  • コードが実行されると、実行コンテキストが作成され、実行コンテキストで現在実行されているコンテキストとみなされます.
    console.log("전역 컨텍스트");
    
    function context1() {
      console.log("컨텍스트 1");
    }
    
    function context2() {
      context1();
      console.log("컨텍스트 2");
    }
    
    context2();
    
    // 전역 컨텍스트
    // 컨텍스트 1
    // 컨텍스트 2
    上記の例に示すように、グローバル実行コンテキストは最初に実行され、次に新しい関数を呼び出して新しいコンテキストを作成および実行し、終了時に戻ります.これにより、グローバル実行コンテキストの実行が完了すると、すべての実行が終了します.
    ひょうじチェーン
    JavaScriptのコードを理解するには、Scopeチェーンを理解する必要があります.
    JavaScript関数のブロック(つまり{}のブロック)に有効範囲がありません.
    EX
    function example() {
      if () {}
      for () {}
    }
    上記の例に示すようにifとforはこのようにします.
    関数だけが有効範囲の単位です.
    関数オブジェクトで、この有効範囲を表すscopeは、scopeチェーンと呼ばれる接続リストとして管理されます.
    スキャンチェーンは、現在実行されているコンテキスト変数のオブジェクトと親コンテキストのスキャンチェーンを参照します.
    EX
    const value = "value";
    
    function print(){
      const value = "value2";
      
      function printV() {
        return var;  
      }
      
      console.log(printV());
    }
    
    print(); // value2
    グローバル変数はvarを「value」に設定しました.
    print関数は、value変数が「value 2」であることを再宣言します.
    print()という名前の関数オブジェクトを最初に作成すると、コンテキスト参照グローバルオブジェクトのスキャンが実行されます.したがって、各関数の実行時に作成される実行コンテキストのscopeチェーンには、グローバルオブジェクト(value)と、前に作成した変数オブジェクト(value 2)が追加されます.これがvalue 2がコンソールに現れる理由です.
    エンクロージャ
    EX
    function outerFunc() {
      const x = 1;
      return function() {
      	console.log(x);
      }
    }
    
    const newFunc = outerFunc();
    newFunc(); // 1
    通常、ほとんどのモジュールは上記のモードを採用しています.
    エンクロージャとはclosed,boundを指し,ライフサイクル終了後の外部関数の変数を参照する関数である.
    つまり、終了したコンテキスト内の変数のパターンを使用します.
    このモードこそ関数式のプログラミングを可能にした.
    EX
    function outerFunc(name, age) {
      function innerFunc(job) {
        console.log(name, age, job);
      }
      return innerFunc;
    }
    
    const newFunc = outerFunc("cskim132", 20);
    console.log(newFunc("programmer")); // cskim132, 20, programmer
    このようなものは通常コリンとも呼ばれます.
    EX
    const outerFunc = (name, age) => job => console.log(name, age, job);
    
    console.log(outerFuncs("cskim132", 20)("programmer"));
    
    上記形式で実施することも可能です!
    の最後の部分
    以上がコンテキストとモジュールです.
    次の投稿では、関数プログラミングについて説明します.
    ソース
  • 内部JavaScript