2011-04-26 5 views
10

한 함수에서 다른 함수로 함수를 호출 할 때 적용되는 규칙은 무엇입니까? 나는이 일을했지만 다른 js 파일의 함수가 첫 번째 js 파일에서 인식되지 않는 것 (firefox을 통해 알아 냈다.)으로 문제가되지 않는다고 생각했다.다른 .js 파일에서 javascript 메서드 호출

주문을 처리 할 때 약간의 규칙이나 트릭을 사용해야합니까?

답변

7

이벤트 핸들러에서 함수를 호출 하시겠습니까? 아니면 javascript 파일이로드 될 때 즉시 호출합니까? 이벤트 핸들러에 없으면로드 순서가 중요합니다. 순환 종속성이있는 경우 "DOM 준비 됨"또는 수신기 (window.onLoad)를 사용하여 초기화 중 일부를 지연해야 할 수 있습니다.

+0

그래서 이벤트 처리기에서 오는 경우 걱정하지 않아도됩니다 ?? – leora

3

브라우저는 HTML에 나타나는 순서대로 javascript 파일을 구문 분석합니다. 따라서 첫 번째 파일에서 실행 된 함수가 두 번째 파일에있는 함수에 의존하면 작동하지 않습니다. $ (function() {})을 사용하면; 예를 들어 jQuery를 사용하면 javascript가 window 객체에서 onload 이벤트가 발생할 때까지 기다려야합니다. 이렇게하면 페이지의 모든 요소가 실행 전에로드되었는지 확인할 수 있습니다.

31

어딘가에 전역 범위에서 액세스 할 수 있어야합니다. 예를 들어 :

// file1.js 
$(function() { 
    function hello() { 
     alert("Hello, world!"); 
    } 
    // ... 
}); 
// file2.js 
$(function() { 
    hello(); 
}); 

hellofile1.js에 정의 된 폐쇄의 범위에 :

// file1.js 
function hello() { 
    alert("Hello, world!"); 
} 
// file2.js 
$(function() { 
    hello(); 
}); 

가능성,이 같은 있습니다. 따라서, file2.js에 액세스하기 위해, 당신은 어딘가로 내보낼해야 할 위치 file2.js 그것을 얻을 수 있습니다 :

또한
// file1.js 
$(function() { 
    function hello() { 
     alert("Hello, world!"); 
    } 
    window.hello=hello; 
}); 
// file2.js 
$(function() { 
    hello(); 
}); 

, 함수가 전에로드해야합니다 정의 구문 분석 및 실행되는 스크립트 함수는 다른 스크립트에서 호출 할 수 있습니다.

+0

마지막 2 줄은 나에게 소중했다. 고맙습니다 –

관련 문제