JavaScriptで関数を定義するさまざまな方法を徹底解説
JavaScriptには、関数を定義する方法がいくつかあります。それぞれの特徴を理解しておくと、状況に応じて適切な書き方を選べるようになります。ここでは、代表的な4つの方法をわかりやすく解説します。
関数宣言(function宣言)
JavaScriptで関数を定義する最も一般的な方法は、functionキーワードを使う方法です。functionキーワードの後に一意の関数名、パラメータのリスト(空でも可)、そして波括弧で囲まれた処理ブロックを記述します。
以下は、通常の関数定義の例です。
<script>
function Display() {
alert("Hello World!");
}
</script>
即時実行関数(IIFE)
JavaScriptで関数を定義するもう一つの方法が、即時実行関数(Immediately Invoked Function Expression:IIFE)です。これは「自己実行匿名関数」とも呼ばれます。
コードを関数スコープ内にラップすることで、名前空間を確保し、メンバー関数の可視性を制御できます。その結果、他のライブラリとの名前の衝突(コンフリクト)を防ぐことができます。
構文
(function() {
// コード
})();
上記のように、最初の括弧のペアによって、括弧内のコードが式として評価されます。
function(){...}
さらに、その後ろに続く2つ目の括弧のペアが、式の結果として生成された関数を呼び出します。
無名関数
無名関数は、名前の識別子を持たない関数で、必ず変数に代入して使用します。その名の通り、関数名を付けずに作成できるのが特徴で、他の関数の引数として渡すこともできます。呼び出す際は変数名を使用します。
以下は、JavaScriptの無名関数の使用例です。
// 無名関数
var func = function() {
alert('これは無名関数です');
}
func();
例
// 無名関数
var a = function() {
return 5;
}
Functionコンストラクタ
JavaScriptでは、Function()コンストラクタを使って新しい関数オブジェクトを生成することもできます。この方法で作成されたオブジェクトは、関数が生成されるタイミングで解析されます。
以下のコードを実行して、Function()コンストラクタの使い方を確認してみましょう。
<html>
<body>
<script>
var num = new Function('p', 'q', 'r', 'return p * q * r');
document.write("掛け算の結果: " + num(5, 2, 9));
</script>
</body>
</html>
このように、JavaScriptには複数の関数定義の方法があり、それぞれ用途やメリットが異なります。可読性を重視するなら関数宣言、グローバル名前空間の汚染を防ぎたいならIIFE、動的に関数を生成したい場合はFunctionコンストラクタなど、目的に応じて使い分けることが大切です。
-
JavaScriptの部分関数(Partial Function)とは?仕組みと実装例をわかりやすく解説
部分関数(Partial Function)とは、既存の関数を引数として受け取り、それに加えて別の型の引数も同時に受け取れるようにする仕組みです。まず渡された引数の一部を使い、残りの引数を受け取る新しい関数を返します。そして、返された関数が呼び出されるときに、あらかじめ固定しておいた引数とそのときに渡された引数をすべて組み合わせて、元の親関数が実行されます。 この手法は「部分適用(Partial Application)」とも呼ばれ、関数型プログラミングの基本的なテクニックのひとつです。共通する引数を先に束縛しておくことで、処理の再利用性やコードの可読性を高めることができます。 コード例 以下
-
JavaScriptのクロージャとは?仕組みと実装例をわかりやすく解説
クロージャとはJavaScriptにおけるクロージャ(Closure)とは、外側の関数の実行が完了して値を返した後であっても、内側の関数から外側の関数のスコープ(変数)にアクセスできる仕組みのことです。言い換えれば、内側の関数は、外側の関数の変数に対して常にアクセスできるということです。この性質を活用することで、データを外部から直接操作されないように隠蔽したり、関数の呼び出し間で状態を保持する処理を実現したりすることが可能になります。クロージャのサンプルコード以下は、JavaScriptでクロージャを使用した具体的なコード例です。ボタンをクリックすると、クロージャによって保持された値を使って2