JavaScriptの無名関数(匿名関数)とは?基本の書き方と使い方をわかりやすく解説
無名関数(匿名関数)とは
JavaScriptには、関数を定義する方法として「関数宣言」と「関数式」があります。このうち関数式は、関数宣言とほぼ同じ構文で記述でき、さらに次の2種類に分けられます。
- 名前付き関数式:関数に名前が付けられているもの(コールスタック上で名前が表示されるため、デバッグ時に便利です)
- 無名関数(匿名関数):関数に名前を付けずに定義するもの
本記事では、後者の「無名関数」について、基本的な書き方と使い方を解説します。
無名関数の基本的な書き方
無名関数は、functionキーワードで関数を定義し、そのまま変数に代入する形で記述します。関数名を指定しない点が最大の特徴です。
var myFunction = function() {
// 関数のコード
}このように、関数そのものは「名前を持たない」状態で定義され、変数myFunctionを通じて扱うことができます。
無名関数の呼び出し方
変数に代入された無名関数は、その変数名を使って呼び出せます。
myFunction();
変数名の後に括弧 () を付けることで、通常の関数と同じように実行されます。
無名関数の特徴と主な用途
まとめると、無名関数とは「名前を持たず、変数に関連付けて使用される関数」のことです。通常の関数と同様に、引数を受け取ったり、戻り値を返したりすることも可能です。
また、無名関数は次のような場面で特に活躍します。
- コールバック関数:
setTimeout()やイベントリスナーなど、関数を引数として渡す処理 - 配列メソッド:
map()やfilter()などで一時的な処理を記述するとき - 即時実行関数(IIFE):定義と同時に実行したい処理をカプセル化するとき
なお、ES6(ECMAScript 2015)以降では、より簡潔に書けるアロー関数も広く使われており、これも無名関数の一種として扱えます。
const myFunction = () => {
// 関数のコード
}用途に応じて通常の無名関数とアロー関数を使い分けることで、より読みやすく保守性の高いコードを書くことができます。
-
JavaScriptの関数式(Function Expression)とは?特徴と使い方を解説
JavaScriptにおける関数式(Function Expression)とは、関数を変数に代入して定義する方法のことです。代入された関数は、その変数名を使って後から呼び出すことができます。 関数式の主な特徴 関数を変数に格納し、変数名を指定して呼び出せる 通常の関数宣言(function declaration)と異なり、ホイスティング(巻き上げ)が行われないため、定義よりも前に呼び出すことはできない 多くの場合、名前を持たない「無名関数(匿名関数)」として定義される コールバック関数や即時実行関数(IIFE)など、さまざまな場面で活用できる この「ホイスティングされない」という点が重
-
JavaScriptのクロージャとは?仕組みと実装例をわかりやすく解説
クロージャとはJavaScriptにおけるクロージャ(Closure)とは、外側の関数の実行が完了して値を返した後であっても、内側の関数から外側の関数のスコープ(変数)にアクセスできる仕組みのことです。言い換えれば、内側の関数は、外側の関数の変数に対して常にアクセスできるということです。この性質を活用することで、データを外部から直接操作されないように隠蔽したり、関数の呼び出し間で状態を保持する処理を実現したりすることが可能になります。クロージャのサンプルコード以下は、JavaScriptでクロージャを使用した具体的なコード例です。ボタンをクリックすると、クロージャによって保持された値を使って2