2016-12-22 7 views
0

私はloadで実行されるより大きな外部スクリプトmymodule.jsに関数myModule.myFunctionを持っています。すべてがうまくいくようです。しかし、今では、外部スクリプトの先頭に外部ファイルのロードから関数を正しくexecteするにはどうすればいいですか?

"use strict"; 

を追加しました。そして、私は

TypeError: MyModule is undefined 

を取得し、ページが機能しなくなります。だから私はどこに問題があるのだろうと思っています。 myModule.js

var myModule = (function(){ 
    // stuff 
})(); 
+0

@BenAstonありがとうございます。どうすればいい?私は今 'var myModule =(function(){// stuff})();' – Daniel

+0

素晴らしい!それはトリックをしたようだ。 – Daniel

答えて

1

は、あなたがする必要があります。ここでは

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title></title> 
    </head> 
<body> 
    <!-- Some html here --> 
    <script src="mymodule.js"></script> 
    <script> 
     function myOnload() { 
      myModule.myFunction(); 
     } 
     window.addEventListener('load', myOnload, false); 
    </script> 
</body> 
</html> 

mymodule.jsMyModuleは、次のようになります。ここに私のページ(残念ながら、私は最小限の例を生成するために管理していなかった)の構造がありますwindowオブジェクトに明示的にmyModuleを割り当てます( "use strict"を使用する場合)。 window.myModule = ...

理由に

変更を:ずさんなモードでは、宣言されていない変数は自動的にグローバルオブジェクトのプロパティとして追加されます。厳格なモードでは、誤った干渉を避けるためではありません)。

+0

私はこれを 'global'ではなく' window'オブジェクトに追加しました。これは同等ですか? – Daniel

+1

ああ、私が間違っていることが判明しました - 'global'はNodeJSでのみ利用可能です – Ben

関連する問題