IIFEインスタント実行関数式


用語

  • 関数宣言式(関数宣言):シースの影響を受ける
  • function sum(a, b) {
      return a + b;
    }
  • 関数式:シースの影響を受けない
  • 匿名関数:匿名関数、変数に匿名関数を割り当てることも、他の関数のパラメータとして使用することもできます.コード上、sum変数に匿名関数が割り当てられている.
  • var sum = function() {
      return a + b;
    }
  • 範囲:任意の識別子(変数)にアクセス可能な範囲
  • Closer
  • ある関数(外部関数)を参照して宣言した変数の内部関数のみで発生する現象
  • 外部関数のメキシコ環境にゴミ収集がない
  • 一級公民
    :一級市民の条件
  • 変数
  • 伝達パラメータ
  • 戻り値が伝わる
  • 一級対象(first-class object):一級公民条件を有する対象
  • 一級関数(first-classfunction):一級公民条件を有する関数であり、JavaScriptでは関数も対象であるため、JavaScriptでの関数は一級オブジェクトであり、一級関数でもある.
  • 関数の実行:関数の後()実行を示します.
  • 1.IIFE即時実行関数


    インスタントコール関数式(IIFE)は、定義されたインスタント実行JavaScript関数である.

    目的

  • ブロック内の領域変数反発防止
  • 世界的なネーミングスペース汚染防止:IIFEは匿名関数が使用可能
  • 関数内に変数を定義するプライバシーを保持しながらアクセス方法を公開することを許可する
    (from Wiki)
  • 簡単に言えば、主にIIFEを使用してprivate scopeを作成します.
    すなわち,関数内で変数を宣言し,関数のスキャンを関数内に制限し,直ちに関数を実行することで,関数名によるエスケープ(関数宣言式使用時)やグローバル変数汚染を防止し,予期せぬ誤りや誤りなどを予防することができる.
    ES 6以前は、モジュール化時にIIFEモードがよく使われていたそうです.

    コードの例


    1番

  • ()内に匿名関数を宣言し、()外に使用して直ちに実行する.
  • (function() {
      console.log('IIFE');
    })();
    
    (()=> {
      console.log('IIFE arrow function')
    })()
  • エラー:必ず()匿名関数を包む.
  • function() {
      console.log('no wrapping parentheses')
    }() // error

    2番

  • 実行関数を示す()内部にあります.
  • (function() {
      console.log('IIFE');
    });
    
    (()=> {
      console.log('IIFE arrow function')
    }())

    3番

  • 名前のあるIIFE
  • (function callIIFE() {
      console.log('named IIFE');
    })();

    IIFEは必ず知っていますか?


    この部分は最も疑わしい.以前IIFEを知ったばかりの頃、ES 6の出現を見ても何の役にも立たなかった.
    しかし、どこにいても、伝統的なコードがあり括弧()で囲まれた関数を見ると、見慣れない感じがします.
    現単位のコードでは、IIFEを見たことはないのですが、似たような概念で使われている部分があるので、このコードを初めて見たときは、IIFEを思い出せないので、かなりうろうろしていました.
    さらに検索を加えるとIIFEを使ったコードの例は少ないですが、何なのか分かると思います.
    過去とずっと一緒にいれば、知るべき知識だと思います.