即時関数

概要

即時実行関数とも呼ばれる。

呼び名の通り定義と同時に実行される関数である。

JSにおいて関数はスコープを限定するために使用されることがよくある。

スコープの限定のために使用し一度しか呼ばれない関数であることがわかっている場合には即時関数として定義する。

構造をみる

下記のように定義する。

(function () {
    //処理
})();

まず、functionの前の()についてはJavaScriptエンジンが解析時にfunctionを見てそれを関数定義と間違えないようにするためのものである。

↓のように()を外して考える。

function () {
    //処理
}();

function () {}部分は無名関数である。

無名関数部分をひとかたまりとしてみると全体で無名関数();の形となる。

関数呼び出しの形になった。
当然()には引数をいれることも可能。

アロー関数に置き換え

(function () {
    //処理
})();

↑の無名関数部分をアロー関数に置き換える。

function () {}()=>{}となる。
なので全体としては↓のようになる。

(()=>{
    //処理
})();

結構違和感ある形になる。