JavaScriptの即時関数(IIFE)とは?その仕組みと使いどころを解説
JavaScriptで関数を定義してすぐに実行したい場合に使われるのが、即時関数(IIFE)です。
IIFEはスコープを分けて変数の衝突を避けたり、一時的な処理を行いたいときに便利なテクニックです。
この記事では、IIFEの基本構文や使い方、使用例についてわかりやすく解説します。
即時関数(IIFE)とは?
IIFE(Immediately Invoked Function Expression)とは、定義してすぐに実行される関数のことです。
関数式をカッコ ()
で囲み、その後に ()
をつけて呼び出します。
基本構文
(function() {
// ここに実行したい処理を書く
})();
この構文によって、関数が即座に実行され、外部とは切り離された「独立したスコープ」が作られます。
アロー関数でも書けます
(() => {
console.log("IIFEアロー関数");
})();
より簡潔に書きたい場合はアロー関数を使うこともできます。
引数を渡すことも可能
(function(name) {
console.log("こんにちは、" + name);
})("太郎");
このように、IIFEには引数を渡して処理することもできます。
IIFEの主な用途
- ローカルスコープを作って変数の衝突を防ぐ
- 一時的な初期化処理をまとめて行う
- 関数や値をグローバルに漏らさない
例:変数の衝突を防ぐ
var message = "グローバル";
(function() {
var message = "ローカル";
console.log(message); // ローカル
})();
console.log(message); // グローバル
IIFEの中で定義したmessage
は、外部の変数とは無関係です。
モジュール的な使い方
モジュール機能がなかった時代には、IIFEを使って変数の隠蔽やデータのカプセル化を行っていました。
const Counter = (function() {
let count = 0;
return {
increment: function() {
count++;
console.log(count);
}
};
})();
Counter.increment(); // 1
Counter.increment(); // 2
count
という変数は外部から直接アクセスできませんが、increment()
を通じて操作できます。
現在の使いどころ
モジュール構文(import/export
)の登場により、IIFEの使用頻度は減りましたが、一時的なスクリプトのスコープ分離には今でも有効です。
まとめ
- IIFEは定義してすぐに実行される関数
()
で関数式を囲み、さらに ()
をつけて即時実行
- スコープを分けて変数の衝突を避けられる
- 引数も渡せるし、戻り値を受け取ることもできる
- モジュールのような使い方もできる
IIFEはJavaScriptの柔軟な関数活用方法のひとつです。
スコープ管理を意識することで、より安全で見通しのよいコードを書くことができるようになります。