[JS]-モジュール(closure)


閉じる?


🌟 内部関数が外部関数にアクセスできるコンテキストを指す
  • エンクロージャは特定の状況で発生する環境であり、関数はこのような状況が発生する条件
  • に相当する.
  • 関数で関数を宣言および使用します.
  • 📌 モジュールを理解するには、まずJavaScriptが変数の有効範囲をどのように指定するかを理解する必要があります.
    function hello(name) {
      let _name = name; // 변수명 앞에 underscore(_)를 포함하면 private val임을 의미
      return function () {
        // 클로저 함수
        console.log('Hello, ' + _name);
      };
    }
    
    let hello1 = hello('혜린');
    hello1(); // output = Hello, 혜린
  • hello()は外部関数として,コールバックの無名関数は埋め込まれた内部関数である.無名関数はCloserです.
  • 内部関数は、外部関数の領域変数nameを参照することができる.
  • 外部関数の実行が終了しても、内部関数は外部関数の変数にアクセスできます.
  • エンクロージャは、内部関数が宣言されたときの環境(LexicalScope)を記憶し、宣言されたときの環境外で呼び出されてもその環境(Scope)にアクセスできます.

    モジュールと通常の関数の違いは?

  • 一般関数は、宣言のたびに内部関数の変数を初期化します.
  • エンクロージャを使用する場合、内部エンクロージャは外部関数の変数値を記憶します.
  • なぜロッカーを使うのですか?


    1」情報を隠すため.特定の関数のみがステータスを変更できるようにします.
  • の内部モジュールでのみ使用されます.
  • 2朕パッケージング-オブジェクトの状態を表すPropertyと操作Propertyの方法を組み合わせる
    3グローバル変数の使用が抑制される(自分が生成した語彙環境を覚えているため)
    4▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
    一般的な関数では、使用すると破棄されますが、使用すると破棄するオブジェクトがメモリに保持されるため、必要に応じて使用するのではなく、必要に応じて使用する必要があります.