2011-11-16 3 views
5

JS는 코드를 실행하기 전에 함수의 사전 컴파일을 수행한다는 것을 알고 있습니다. 따라서 함수 순서는 중요하지 않습니다. 그러나 * .js 파일을 연결할 때 함수 순서가 문제가됩니다. 예를 들어언제 기능 순서가 중요합니까?

위 코드에서

<script src="@Url.Content("~/Scripts/Personal/MyJScript.js")" type="text/javascript"></script> 


<script type="text/javascript"> 
    $(document).ready(function() { 
     hello(); 
     afterCall(); 
     hello2(); //fails, defined in MyJScript2.js 

    }); 

    function afterCall() { 
     alert('inline function defined after call'); 
    } 
</script> 

<script src="@Url.Content("~/Scripts/Personal/MyJScript2.js")" type="text/javascript"></script> 

hello2() 기능은 통화가 정의 된 후에 링크 된 파일에 정의되어있다. 호출이 실패합니다. 그래서 직관적으로 지금 함수 순서 과 일치합니까?

$(document).ready을 수행한다고 생각하면 문서는 준비 될 때와 같아야합니다. 그래서, 왜 이런 일이 생길까요? 요청으로


, 여기에 몸에

<body> 
    <script src="/Scripts/Personal/MyJScript.js" type="text/javascript"></script> 


<script type="text/javascript"> 
    $(document).ready(function() { 
     hello(); 
     afterCall(); 
     hello2(); //fails 

    }); 

    function afterCall() { 
     alert('inline function defined after call'); 
    } 
</script> 

<script src="/Scripts/Personal/MyJScript2.js" type="text/javascript"></script> 

</body> 
+0

어디 전체 HTML에서 할 그 '

0

스크립트 태그 가능성이 실행 (또는 되려고 노력) 외부 JS 파일에 대한 추가 요청이 완료되기 전에됩니다 클라이언트 측 HTML입니다.

로드 순서 및 타이밍보다 기능 선언 순서가 덜 중요합니다.

0

대신 MyJscript2을 가져올 스크립트 태그를 사용하여, 당신은 스크립트를 잡고 성공 콜백에서 일부 기능을 실행하기 위해 getScript을 사용할 수 있습니다.

관련 문제