2016-12-22 8 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을 명시 적으로 할당합니다 ("엄격한 사용"을 사용하는 경우). window.myModule = ...

이유에

변경 그것은 : 별거 모드에서 선언되지 않은 변수는 자동 전역 객체에 속성으로 추가됩니다. 엄격 모드에서 우발적 인 간섭을 피하기 위해).

+0

'global'보다는'window' 객체에 추가했습니다. 이것은 동등한가? – Daniel

+1

아, 내가 틀렸다는 것을 알게되었습니다.'global'은 NodeJS에서만 사용할 수 있습니다. – Ben