IIFEはこういうヤツです。きっと、見たことがあると思います:
(function () {
var i = 10;
})();
IIFEは「関数式(expression)」として書かれます。
関数式は値として扱えるため、変数に代入することもできます:
var myModule = (function () {
var i = 10;
})();
一方、関数宣言は定義されるだけで、明示的に呼び出さない限り実行されません。
IIFEは関数式であり、その直後に () を付けているため、定義と同時に実行されます。
これが Immediately Invoked の名前の由来です:
(function () {
console.log("foo"); // すぐに実行される
})();
ではIIFEの何がおいしいの?というと、メリット No.1 は
グローバルスコープを汚染せずに済む、ということでしょう:
var i = 10;
(function () {
var i = 20;
})();
console.log(i); // 10と出力される
もう1つ、個人的に気に入っているのは
「ここはIIFEの中で完結しているよ」という意思表示にもなることです。
それではまた!
*** 本投稿の内容は個人の見解であり、所属する組織の公式見解ではありません ***
私はPSPINCという米国の会社からプログラミングのお仕事をいただいております。
PSPINCはCakePHPを用いた開発が多々あります。
CakePHPを使って、米国の会社から仕事を受けてみませんか?
ご興味のある方は当方までメッセージをください。