자바스크립트 런타임

younk·2023년 6월 4일
0

자바스크립트

목록 보기
1/1
post-thumbnail

런타임이란?

프로그래밍 언어가 구동되는 환경을 의미한다.

자바스크립트 런타임

자바스크립트가 구동되는 환경.

자바스크립트 런타임의 종류

  • 웹브라우저 프로그램(크롬, 파이어폭스, 익스플로러 등)
  • Node.js

V8엔진이란?

오픈소스 자바스크립트 엔진 중 하나. 자바스크립트와 웹어셈블리 엔진이다.
크롬과 node.js 등에서 사용된다.
V8은 자바스크립트를 바이트코드로 컴파일하고 실행하는 방식을 사용한다.
엔진 안에는 힙과 콜스택이 하나씩 존재한다.(싱글스레드)
setTimeout, Dom, Ajax 등과 같은 비동기 메소드가 없다.

Web API

setTimeout, Dom, Ajax가 있다.
이벤트 루프와 콜백 큐를 가지고 있다.

자바스크립트의 블로킹

자바스크립트는 싱글스레드이기 때문에 동기적으로 메소드를 처리한다.
동기적으로 실행되는 네트워크 요청은 블로킹을 만든다.
코드가 실행되고 종료될때까지 유저가 클릭을 해도 어떠한 반응을 하지 않고, 콜스택이 멈춰있는 상태를 블로킹이라고 한다.
이를 피하기 위해서 Web API를 이용해 비동기 요청을 보낸다.

콜백큐

콜백큐는 Web API 결과값을 쌓아두는 큐이다.
자바스크립트에서 setTimeout(cd, 5000)을 호출하게 되면, Web API는 타이머를 동작시켜 5초 후에 콜백큐에 cd를 쌓는다.

이벤트 루프

자바스크립트에서 비동기 콜백을 만들어 주는 것은 이벤트 루프이다.
이벤트 루프는 콜스택과 콜백 큐를 주시하는 역할을 한다.
콜스택이 비어있으면 큐의 첫번째 콜백을 스택에 쌓아 효과적으로 실행할 수 있게한다.
Web API의 콜백이 완료되면 콜백은 큐에 쌓이게되고, 이벤트루프에 의해서 실행된다.

참조
https://hanamon.kr/javascript-런타임-작동-방식-비동기와-이벤트-루프/

0개의 댓글