4.3 無名関数
前項で function の基本構文を学習しましたが、function 関数には、必ずしも名前をつける必要はありません。
こうした関数名のない関数を「無名関数(anonymous function)」と呼びます。無名関数は単独で定義するのではなく、主に以下の2つの場面で使用されます。
1. 変数に代入する(関数式)
無名関数を作成し、それを変数に代入して使用する方法です。これを「関数式」と呼びます。
変数に代入することで、その変数名を関数名のように扱って呼び出すことができます。
// 無名関数を変数 multiply に代入します
const multiply = function(a, b) {
return a * b;
};
// 変数名を関数名のように使って呼び出します
console.log(multiply(4, 6)); // 出力: 24
2. イベントハンドラとしての利用
JavaScript 入門の第4章で、DOM(Document Object Model)について学習しました。
「あるボタンがクリックされたとき」など、特定のイベントが発生した際に実行する処理として、その場限りの関数を記述する場合にも無名関数が使われます。
// ボタン(id="btn")がクリックされたときの処理を無名関数で定義
document.getElementById('btn').onclick = function() {
alert("クリックされました");
}
4.3.1 引数と戻り値を使った無名関数と関数式のプログラム
関数式を用いた無名関数の動作を実際に確認しましょう。
ソースフォルダ:public/ch04
ファイル名:anonymous.js
➢ anonymous.html
前項で作った ch04/funcion.html をコピーし、ch04 にペーストしてください。
その際に、ファイル名を anonymous.html に変更します。
ファイル内の funcion.html や function.js の記述も、anonymous.html や anonymous.js に修正します。
➢ anonymous.js
// anonymous.js
// 無名関数を変数 multiply に代入します
const multiply = function (a, b) {
return a * b;
};
// 変数名を関数名のように使って呼び出します
let total = multiply(4, 6);
alert("4 * 6 の結果は: " + total);
実行結果

解説
まず 4 行目の「const multiply = function (a, b) {」に注目してください。ここでは、前章で学んだ const という宣言を用いて、multiply という名称が、あたかも関数として動くように宣言しています。前章のポイントで const が固定するのは「参照先のアドレス」であり、内容そのものではないと説明した実例になっています。
const multiply という宣言以降、multiply という変数を使う時は、以降の無名関数が必ず呼び出されることが保証されます。これが let や var だと再代入可能なため、それ以降で中身が変更される恐れがありますので、ここでは使用できません。
multiply は無名関数の結果を返す箱のはずですが、無名関数と const 宣言で一意に紐づくことで、あたかも multiply という掛け算専用の関数を呼び出したような挙動を示します。
4: const multiply = function (a, b) {
5: return a * b;
6: }
9 行目は、前章で学んだ let を使い total という変数に、multiply(4, 6) の結果を代入しています。
9: let total = multiply(4, 6);
