TIL 13|ベースコピー


Closure


Closureの定義

  • 関数と公称関数の語彙環境の組合せを指す.この環境は、モジュールの作成時に有効な範囲内のすべての領域変数から構成されます.
  • を簡単に理解すると,変数と関数宣言の形式として理解できる.
  • Closure関数の特徴(1)


    2回の呼び出し関数

    const adder = x => y => x+y;
    adder(4)(5); // 9

    戻り関数


    戻り値は関数

    const adder = x => y => x+y;
    adder(5)(7); // 12
    
    typeof adder(5) // 'function
                     
    adder(5) // y => x(x는 5)+y
  • 加算器(5)の戻り値が関数の形式である.すなわち,加算器は関数を返す関数である.
  • Closure関数の基本形式

    // const adder = x => y => x+y
    
    // 위와 동일하게 작동하는 코드
    const adder = function(x) {
      return function(y) {
        return x+y;
      }
    }
    
    
    function(y) {        <<이 부분의 리턴값이 함수의 형태
        return x+y;  
      }

    Closure関数の特徴(2)


    外部関数と内部関数


    返される関数はスキャンを区別します。スコフは変数の近い範囲です。

  • 露光の核心は、スキャナを使用して変数のアクセス範囲を閉じることにある.したがって,宣言変数の位置は戻り関数の位置と同様に重要である.
  • const adder = function(x) {  <<외부 함수의 변수 x임 <<이 함수문은 외부 함수임
      return function(y) {       <<내부 함수의 변수 y임 <<이 함수문은 내부 함수임
        return x+y;              이처럼 Closure 함수는 스코프가 분리되어 있음
      }
    }
  • 外部関数はyにアクセスできません.外部スキャンでは、内部スキャンからアクセスできません.
  • 内部関数はxに近づくことができる.内部スキャンプログラムから外部スキャンプログラムが宣言した変数にアクセスできます.
  • ===>したがって、Closure関数の特徴(2)は、内部関数が外部関数で宣言された変数にアクセスできることである.