0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScript:IIFEでグローバルスコープの汚染を防ぐ

Last updated at Posted at 2025-12-19

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を使って、米国の会社から仕事を受けてみませんか?
ご興味のある方は当方までメッセージをください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?