이벤트 루프는 JavaScript가 단일 스레드 언어임에도 불구하고, 비동기 작업을 수행할 수 있게 해주는 핵심 컴포넌트다.
이벤트 루프 예제
console.log('첫 번째');
setTimeout(() => console.log('두 번째'), 0);
console.log('세 번째');
console.log('첫 번째')
는 Call Stack에 쌓이고 바로 실행되어 "첫 번째"를 출력한다.setTimeout
은 비동기 함수로, 콜백을 Callback Queue에 넣고 다음 줄로 진행한다.console.log('세 번째')
는 Call Stack에 쌓이고 바로 실행되어 "세 번째"를 출력한다.console.log('두 번째')
를 꺼내어 Call Stack에 넣고 실행한다. 그 결과 "두 번째"가 출력된다.결과적으로 출력은 "첫 번째", "세 번째", "두 번째" 순서로 나타나게 된다.
실행 컨텍스트는 코드의 실행에 필요한 정보를 담고 있는 추상적인 개념이며, 이는 실행 시점에 컴파일러에 의해 생성된다.
this
키워드가 어떤 객체를 참조하는지에 대한 정보다.이벤트 루프와 실행 컨텍스트는 JavaScript의 동작을 이해하는 데 중요한 개념이다. 이벤트 루프는 비동기 작업을 가능하게 하며, 실행 컨텍스트는 현재 실행 중인 코드의 상태와 정보를 관리한다. 이 두 개념을 함께 이해하면, JavaScript가 어떻게 단일 스레드 언어임에도 불구하고 비동기 작업을 처리하는지를 더 잘 이해할 수 있다.