출처
자바스크립트 - 동기(Synchronous)? 비동기(asynchronous)?
자바스크립트는 한 번에 하나의 작업을 수행한다.
한 작업이 실행되는 동안 다른 작업은 멈춘 상태를 유지하고 자신의 차례를 기다리는 것을 말한다.
마치 음식점에 여러 사람들과 갔을 때, 키오스크를 이용하여 한 사람씩 결제하는 것과 유사하다.
이러한 동작을 **단일 스레드(싱글 스레드), 동기(Synchronous)**라고 부른다.
console.log("hi");
console.log("hello");
console.log("bye");
이렇게 console.log()를 세 개를 입력하고, 출력 결과를 확인해보면
이렇게 순서대로 "hi", "hello", "bye"가 찍히는 것을 확인할 수 있다.
그것은 바로 Javascript의 Engine(V8)을 까 보면(?) 알 수 있다.
출처 : https://blog.sessionstack.com/how-does-javascript-actually-work-part-1-b0bacc073cf
일단 Memory Heap과 Call Stack은 자바스크립트의 엔진의 주요 구성 요소이다.
변수와 객체의 메모리 할당을 담당하는 곳을 말한다.
함수가 호출이 되면 쌓이는 곳이다. 대신 함수가 쌓이는 순서와는 반대로 실행된다.