2015-01-06 2 views
1

JavaScript에서는 비동기 작업/이벤트가 호출 될 때마다 작업/이벤트의 콜백 함수 (작업/이벤트 완료 후에 만 ​​실행되는 함수)와 함께 메시지가 만들어집니다.JavaScript 파일의 초기 실행

작업/이벤트가 완료 (또는 트리거)되면 메시지가 메시지 대기열로 이동합니다. 이 메시지 대기열은 지속적으로 폴링되며 (이 폴링을 "이벤트 루프"라고 함) 메시지가 대기열에서 발견되면 메시지의 콜백이 호출 스택에 배치되어 실행됩니다. 그런 다음 이벤트 루프로 돌아가서 새 메시지를 기다리거나 대기열에서 다음 메시지를 잡고 콜백을 실행합니다.

제 질문은 자바 스크립트 파일을 처음 실행할 때 이벤트 루프가 시작되기 전에 모든 것이 동일한 호출 스택에서 실행되고 있습니까?

답변

1

이것은 매우 흥미로운 질문입니다. 어떤 일이 일어나고 있는지 완전히 이해하지 못해 의심 할 여지없이 더 나은 설명을 해줄 것입니다. 그러나 제 테스트에서 나는 당신의 질문에 대한 답이 아니오라고 결정했습니다.

는 다음 코드 예제를 보자

alert('start'); 

var cats = document.getElementById('cats'); 

cats.addEventListener('click', function() { 
    alert('cats'); 
}); 

cats.click(); 

alert('finish'); 

경보 화재를 다음과 같이 start, cats, finish을. 코드 catsfinish 앞에 나타나는 것은 코드가 실행될 때 이벤트 루프에 추가된다는 것을 증명합니다.

http://jsfiddle.net/3bm2pz86/

+0

위로 기독교인을 청소 해 주셔서 감사합니다. 이제는 각 라인이 스택에서 실행 된 후에 이벤트 루프가 틱을 수행해야하는지 궁금합니다. – Nathan

+0

@ Nathan 아마도,하지만 불행히도 이것은 내 지식을 초월한 것입니다. 몇 가지 조사를 해보고 알아 낸 경우 돌아와서 조사 결과를 게시하십시오! –