無名関数の利便性 | 無名関数 | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

無名関数とは?

無名関数(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)にも利用できる。
  • 現在ではアロー関数で書かれることも多い。