LoginSignup
2
4

More than 3 years have passed since last update.

Javascriptコーディングでグローバル汚染を防ぐために即時関数を利用する方法

Posted at

Javascriptを用いた開発を行うときに、一般的に出回っている入門書のように、jsファイル内でそのまま変数を定義すると、他のjsファイルを読み込んだ際に、変数がバッティングしてコンテンツの機能が停止することがあります。
こういったことはバグの元ですし、特にチーム開発では大きな支障があります。

それを防ぐために、一つのjsファイル内で作成した変数が他コンテンツに干渉しないようにする必要があります。

具体的には、jsファイルを即時関数で囲うことになります。
以下に2通りのひな型を記します。


(function (root) {


  var initialize = 以下略
  var insert = 以下略

  root.SomeThing = root.SomeThing || {};

  // 他のjsファイルで用いたい関数を以下に記述
  root.SomeThing.Main = { 
    initialize: initialize,
    insert: insert
  };

}(typeof window === 'object' ? window : typeof global === 'object' ? global : this));

多数の関数や定数を流用したい場合は以下のやりかたもあります。


(function(root) {

  var SomethingConst = {};  //←ナニモノか連想配列を定義します(ここでは例としてSomethingConstとする)

  /*ここに、定義したい定数を用意します。定数は「SomethingConst.honyarara =」と言う形で記述*/

  root.SomethingConst = SomethingConst; //←rootのメソッドとして実行したい関数を設定

}(typeof window === 'object' ? window : typeof global === 'object' ? global : this));
2
4
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
2
4