2013-07-27 4 views
0
(function foo() { 
     alert('Hello World!'); 
     setTimeout(foo,1000); 
    })(); 

나는 이와 비슷한 함수를 작성했습니다. 이 함수를 태그 내의 HTML 페이지 안에 넣으면이 함수가 제대로 작동합니다. 하지만이 함수를 외부 자바 스크립트 파일에두고이 파일을 내 웹 페이지에 연결하면이 함수는 한 번만 실행됩니다 (경고는 한 번만 나타납니다). 나는 setTimeout (foo, 1000)을 의미한다; 은 효과가없는 것 같습니다.외부 자바 스크립트 파일의 코드가 제대로 작동하지 않습니다.

어디에 문제가 있으며 어떻게 제거 할 수 있습니까? [그러나 나의 JS 파일에 다른 기능은 제대로 작동합니다.]

+0

외부 파일에 위 코드 만 포함되어 있습니까? js 파일에 어떤 다른 기능이 있습니까? –

+0

또한 HTML을 표시 할 수 있습니까? JS가 참조되는 위치 및 호출 위치는 어디입니까? –

+0

재현 할 수 없습니다 – sabof

답변

0

가 고정 :

(function() { 
    function foo(){ 
     console.log('Hello, world!', new Date().toLocaleTimeString()); 
     setTimeout(foo,1000); 
    } 

    window.onload = foo; 
})(); 

조금 theory and examples을 :

난 당신이 그냥 같이 폐쇄 기능에 밖으로 포장 필요가 있다고 생각합니다.

+0

이것은 기능면에서 다릅니다. 'foo'는 한 번만 실행됩니다. 또한 명명 된 함수 표현식은 자체에 대한 참조를 얻습니다. 추가적인 폐쇄가 필요 없습니다. – sabof

+0

@sabof 수정 된 사항을 추가했습니다. – CodeGroover

관련 문제