JS는 웹브라우저를 통해 실행되는데 이때 스택에 코드들이 한줄 한줄 실행된다.
변수를 만나면 변수가 무엇인지 저장되어있는 haep 이라는 곳에서 변수를 가져다쓴다.
stack은 한번에 하나밖에 코드를 실행하지 못하고 JS는 이 스택이 하나 있기 떄문에 single threded 라고 한다.
setTimeout같은 코드들은 백그라운드(JS의 기능이아니고 브라우저의 기능으로 구현된 webAPIs)에서 비동기적으로 실행되고 지정된 시간이 지나고 실행해야 할떄가 오면 Queue(콜백큐 또는 이벤트큐라고 부름)곳에
하나씩 줄을 세워(동기적으로) 콜 스택으로 하나씩, stack이 비어 있을 때만 보내서 차례대로 실행함 (이벤트 루프)
따라서 stack과 queue를 바쁘게 만들면 로딩이 오래걸림
자바스크립트 엔진은 자바스크립트 소스 코드가처음 실행되는 순간도 하나의 함수가 실행된다고 본다. 크롬에서는 이를 anonumous 라는 함수로 표시한다. 호출스택에 쌓인다.
이벤트루프 이해하기 영상
https://www.youtube.com/watch?v=8aGhZQkoFbQ
'First step > 언어의 기초' 카테고리의 다른 글
JS 기본기 채우기 (0) | 2022.01.06 |
---|---|
TS 제너릭 관련 (0) | 2022.01.06 |
3주차 (0) | 2021.08.07 |
2주차 조건부 실행, 함수 (0) | 2021.08.02 |
1주차 인트로 변수, 표현식 및 코드 (0) | 2021.07.22 |