INDEX
無名関数とは?

無名関数(Anonymous Function)とは、関数名を持たない関数のことです。
JavaScriptでは、関数を変数に代入したり、他の関数へ渡したりすることができます。その際、一度しか使用しない処理では、名前を付けずに無名関数として記述することがよくあります。
無名関数の基本的な書き方
無名関数は、関数名を書かずに変数へ代入して使用できます。
基本的な例
const greet = function () {
console.log("Hello, World!");
};
greet();
実行結果
Hello, World!
この例では、名前のない関数をgreetという変数へ代入しています。関数名はありませんが、変数名を使って呼び出すことができます。
通常の関数との違い
| 通常の関数 | 無名関数 |
|---|---|
| 関数名を持つ。 | 関数名を持たない。 |
| 宣言するとその名前で呼び出せる。 | 変数や引数として利用することが多い。 |
| 何度も利用する処理に向いている。 | 一時的な処理やコールバックに向いている。 |
コールバック関数として使う
無名関数は、他の関数へ渡すコールバック関数として非常によく利用されます。
setTimeoutの例
setTimeout(function () {
console.log("2秒経過しました");
}, 2000);
実行結果(2秒後)
2秒経過しました
このように、一度しか使わない処理は無名関数で書くとコードが簡潔になります。
配列メソッドでもよく使われる
map()やfilter()などの配列メソッドでも、無名関数は頻繁に利用されます。
mapの例
const numbers = [1, 2, 3];
const doubled = numbers.map(function (num) {
return num * 2;
});
console.log(doubled);
実行結果
[2, 4, 6]
コールバック関数として無名関数を渡すことで、配列の各要素を処理できます。
即時実行関数(IIFE)
無名関数は、定義すると同時に実行する即時実行関数(Immediately Invoked Function Expression:IIFE)にも利用されます。
即時実行関数の例
(function () {
console.log("すぐに実行されました");
})();
実行結果
すぐに実行されました
現在ではES6モジュールの普及により使用頻度は減りましたが、既存のコードでは今でも見かけることがあります。
アロー関数との関係
ES6以降では、無名関数はアロー関数でより簡潔に書けるようになりました。
アロー関数で書き換えた例
const greet = () => {
console.log("Hello, World!");
};
greet();
実行結果
Hello, World!
現在では、コールバック関数などではアロー関数が使われることが多くなっています。ただし、thisの動作が通常の関数とは異なるため、用途に応じて使い分けることが大切です。
まとめ
- 無名関数は関数名を持たない関数である。
- 変数への代入やコールバック関数としてよく利用される。
setTimeout()やmap()などで頻繁に使用される。- 即時実行関数(IIFE)にも利用できる。
- 現在ではアロー関数で書かれることも多い。