私は Javascript Module Pattern を使用しています。これにより多くの利点が得られます。実行時に以下を使用して JS ファイルをロードしています。
return $.ajax({
url: "../../Scripts/myFile.js",
dataType: "script",
cache: true
});
myFile.js の 1 行目は myModule.Loaded = {} です。これを親 (呼び出し側) スクリプトで使用して、myFile.js が確実に読み込まれるようにします。
myFile.js の最初の数行を次に示します。
myModule.Loaded = {};
myModule.sub1 = (function () {
// some code
})();
しかし、何が起こるかというと、myModule.Loaded 値が未定義であるため、ファイルがまだロードされていないという印象を与えます。Firefox Firebug では、[スクリプト] タブにファイルがロードされているのを確認できますが、モジュール定義が失われ、次のようになります。
// the 1st line (myModule.Loaded = {}) vanished
function () {
// the same code as above
}
つまり、モジュール パターンを維持する代わりに、無名関数のグループになりました。どうしたの?