web-dev-qa-db-ja.com

すぐに呼び出される匿名のJavaScript関数の用語は何ですか?

ドキュメントを簡単に整理して提供できるように、チーム用のJavaScriptスタイルガイドを作成しています。しかし、私は私の質問が適用される小さなバンプにぶつかりました...

すぐに呼び出される匿名のJavaScript関数を呼び出すにはどうすればよいですか。私はそれを単に「無名関数」と呼ぶことができることを知っていますが、それがすぐに呼び出されるという事実を強調したいと思います。

次に例を示します。

var MyVariable = (function(data){
  return "another value"
})("some value"); 

console.log(MyVariable);
// "another value"
29
user160274

彼らはすでにJavascriptの世界でそのための用語を持っています。それらは Immediately Invoked Function Expressions(IIFE) と呼ばれます。

それはなんですか

IIFE関数には名前が付けられていません。代わりに、インタプリタがそれらに出くわすと、それらは一度実行されます。

var area = function() {
    var width = 3;
    var height = 2;
    return width * height;
}();

コードブロックの閉じ中括弧の後の最後の括弧は、関数式をすぐに呼び出すようインタープリターに指示します。

関数宣言を書く場合は、グループ化演算子または関数を囲む括弧を追加して、関数をすぐに呼び出すことができる式として扱うインタープリター:

var area;
(function() {
    var width = 3;
    var height = 2;
    area = width * height;
}());


それらが使用されるとき

IIFEは、繰り返し呼び出されるのではなく、タスク内で一度だけ実行する必要があるコードに使用されます。

  1. 関数が呼び出されたときの引数として(値を計算するためなど)
  2. プロパティの値をオブジェクトに割り当てること。
  3. イベントハンドラーおよびリスナー。
  4. 同じ変数名を使用する可能性のある2つのスクリプト間の競合を防ぐため。これらは、変数名が同じかどうかわからない別のスクリプトにコードをドロップするラッパーとして使用できます。
39
Lawrence Aiello