JavaScriptの即時関数

チラ裏。

普通に書くときはこんな感じ。

(function(global) {
// ... ...
})(this);

thisはブラウザの場合はwindowになるけど、オブジェクトに依存しない処理ならオブジェクト名を書かないほうがよいんではないか。

windowオブジェクトに依存する場合は

(function(global, window) {
var document = window.document,
    location = window.location;
// ... ...
})(this, window);

と、敢えて分けて書く。上のやつと合わせるって感じ。

undefinedを書いておきたいときは、

(function(global, undefined) {
// ... ...
})(this);

と書きたいんだが、JSLintが引数の変数名に予約語使うな!って言ってくるので、

(function(global, undef) {
// ... ...
})(this);

とかしておいたほうがいいのかなぁとは思ってる。
ちなみにJavaScript的にglobalって予約語じゃないのよね。不思議。

なにかライブラリ的なものを書く場合は、

this.foo = (function(global) {
  var exports = {};
  // ... ...
  return exports;
})(this);

とか書くことが多いんだけど、なんかびみょい。this.fooを他のファイルで弄りたい時どうしようとか。