はじめに
JavaScriptの即時関数の理解が曖昧だったのでまとめました。
即時関数とは
JavaScriptの関数の形態の一つで、定義されるとすぐに実行されるという特徴を持ちます。
英語ではImmediately-Invoked Function Expression、IIFEと呼ばれます。
構文は次のようになります。
(function() {
//処理
})();
もしくは
((function() {
//処理
}())
アロー関数の形では次のように書けます。
(() => {
//処理
})();
即時関数のメリット
変数の有効範囲を狭くすることができるということです。
即時関数を使用すると処理が一時的なスコープの中で実行されるため、変数の有効範囲を狭くすることができます。
変数の有効範囲を狭くすることは、可読性や保守性を高めるために重要なことです。
(参考: 変数と関数の有効範囲を最小限にする)
また、即時関数を使用することで変数名や関数名の衝突を防ぐこともできます。
即時関数のデメリット
- 関数の再利用ができない
- 即時関数を多用してスコープが多くなるとメモリを多く消費する可能性がある
などのデメリットもあります。
即時関数を使用する場面
- 変数のスコープを限定したい
- ライブラリやフレームワークとの名前の衝突を防ぎたい
- 初期化処理を一回だけ行いたい