最近下のように書いてる。変遷としては、若干サーバーサイドJavaScriptを意識しつつ徐々に離れていった感じ。 即時関数を2重にして、トップには何も書かない 外側の即時関数の中には、'use strict'を書く 非strictモードのコードが含まれているとどっちのモードになるかわからないため。負の遺産が含まれ(ry だいたいjQuery使うので、外側の即時関数の書き方はjQuery boilerplateのを参考にしている(jQuery使わない場合は、第二引数を抜かす) 内側の即時関数に実際の宣言を書く app.jsか何か設定用のスクリプトでアプリケーション用名前空間としてグローバルオブジェクトを宣言しておく(window.App = {};など) 即時関数内で宣言されたプロパティやメソッド、関数などを返り値にして、グローバルオブジェクトに展開する /** * functions.js