無名関数

関数式と無名関数

ここまで関数を定義するのに「関数宣言」を用いてきました。
あとで呼び出して使用する関数名と、関数が何をするかの定義の両方を指定する方法です。
実はJavaScriptでは他にも関数の定義方法があり、その一つが関数名を指定しない「無名関数(匿名関数)」といいます。

名前のない関数をどうやって呼び出すのか?といいますと、「関数式」を使用することで呼び出せるようになります。
関数式は構文的には関数名を省略する以外は関数宣言と全く同じです。
下記の例では変数fを使って、f()で代入した関数を呼び出すことができます。

var f = function() {
  // 処理内容
}

無名関数は他の関数(メソッド)の引数として、あるいはオブジェクトのプロパティとしてよく使われます。

即時関数

ここまでの関数は事前に定義をして、その後に関数を実行してきましたが、
宣言と同時に関数を実行することもできます。
この関数を即時関数といいます。
即時関数の文法は下記の通りです。

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

先ほどは関数式を使用することで無名関数を作ることができると説明しましたが、
その応用でその関数を即時に呼び出すことができます。
即時関数のメリットは即時に関数を実行できることと、関数内部に独自のスコープを持っているためスコープ外からはアクセスできないことにあります。

var message = (function(){
  return 10 * 10;
})();
console.log(message); // 100