: 기본적으로 자바스크립트는 웹브라우저에서 실행이 된다.
스택이라는 공간이 있다.
스택 위키백과 참고
https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D
스택은 LIFO 즉 후입선출 방식 + 한 방향으로만 데이터가 접근가능하다.
또한 한 번에 한 번씩 코드가 실행된다.(Single Threaded)
보통 JS는 동기적인 처리를 하지만,
setTimeout과 같은 시간 지연 함수는 비동기처리를 한다.
바로 실행되는 함수가 아니기 때문에, 잠시 대기상태로 둔다.
그러다 지연된 시간이 지나면 Queue라는 공간으로 이동 후
stack으로 올라가서 코드가 실행된다.
stack에서 코드 실행이 이뤄지기 때문에, stack이 비어있을 때
대기가 끝난 코드들이 차례대로 이동할 수 있다.
따라서 코드 짠 순서와 관계없이 비동기적인 처리가 가능해진다.
이와 비슷한 예로 Ajax요청코드, event Listener도 있다.
비동기에 관한 자세한 부분은 이전 포스팅에 설명해두었다.
[JS] 동기와 비동기, 콜백함수 개념정리
Queue 위키백과 참고
https://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0)
참고 유투브 동영상
코딩애플
개발자 90%가 모르는 자바스크립트 동작원리 (Stack, Queue, event loop)