Javascript 동작 원리_JavaScript

miin·2021년 12월 21일
0

Java Script

목록 보기
13/35
post-thumbnail

자바스크립트 엔진

  • 구글의 V8은 자바스크립트 엔진의 대표적인 예이다. Chrome과 Node.js에서 사용한다

1) Memory Heap: 복합 자료형(배열, 함수, 객체등)을 저장하는 메모리 공간

  • 필요할때 할당한다(allocate)
  • 사용한다. 읽기,쓰기 (use)
  • 필요없어지면 해제한다 (release)

2) 호출 스택 (Call Stack): 코드 실행에 따라 호출 스택이 쌓이는 곳, 기본 자료형(숫자, 문자열, 불) 과 주소 등을 저장하는 메모리 공간

  • 자바스크립트는 단 하나의 호출 스택을 사용한다(단 하나만 실행할 수 있음-> single threaded라고 함)
  • 호출 스택에 쌓인 함수나 코드를 위에서 아래로 차례차례 실행한다
  • 하나의 작업이 끝나면 pop하고 바로 아래의 함수나 코드를 실행한다
  • 작업을 차례대로 실행하므로 하나의 작업이 끝날 때까지 또 다른 작업을 실행하지 않는다

자바스크립트 런타임

런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경이다
Node.js나 크롬등의 브라우저들은 자바스크립트가 구동되는 환경이기 때문에, 이를 자바스크립트 런타임이라고 한다. 자바스크립트 엔진 밖에서도 자바스크립트에 관여하는 요소들
1) Web API
- 브라우저에서 제공되는 API이다
- 자바스크립트 엔진에서 정의 되지 않았던 setTimeout이나 HTTP요청(ajax) 메소드, DOM 이벤트 등의 메소드를 지원한다

2) Task Queue
- 이벤트 발생 후 호출되어야 할 콜백 함수들이 기다리는 공간이다(이벤트 실행을 관리하기 위해 사용됨)
- 이벤트 루프가 정한 순서대로 줄을 서 있으므로 콜백 큐(Callback Queue)라고도 한다.
- 자바스크립트에서 비동기로 호출되는 함수들은 호출 스택(call stack)에 쌓이지 않고 태스크큐 (task queue)로 보내진다

3) Event Loop
- 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정한다

  • 레퍼런스 한다: 스택의 주소가 힙의 자료를 가리키는 것
  • 러퍼런스 변수: 스택에 저장된 것 중에 주소가 저장된 변수
  • 어떤 값이 메모리 어디 있는지를 알면 프로그램의 값을 조작할 수 있다
  • const 일때 배열에 수정이 가능할때의 이유: 힙에 있는 레퍼런스된 복합 자료형을 조작하는것에는 문제가 없기 때문(쉽게-> 힙에서 원래있던 데이터에 수정하는건 문제가 없다)
  • 파괴적 처리: 원본이 수정 가능
  • 비파괴적 처리: 원본이 수정 불가능

0개의 댓글