728x90
자바스크립트 엔진
- 자바스크립트 엔진은 자바스크립트 코드를 읽어 실행하는 프로그램이다.
- 작성한 자바스크립트 코드는 자바스크립트 엔진을 통해 파싱되고 실행된다.
- Chrome 브라우저의 경우 V8 엔진을 사용한다.
- node.js 는 브라우저 외의 환경에서 자바스크립트 코드를 실행하도록 하는 프로그램이다.
- node.js는 여러 프로그램으로 구성되며, 자바스크립트 코드를 읽는 프로그램으로 V8을 사용한다.
- 브라우저 환경과 node.js 환경은 같은 자바스크립트 코드를 작성해도 다르게 동작할 수 있다.
자바스크립트 코드 실행
- 자바스크립트 엔진은 코드 실행 전 실행 컨텍스트를 생성한다.
- 실행 컨텍스트는 두 단계를 통해 생성된다.
- 생성 단계에서 자바스크립트 엔진은 변수 선언을 읽는다.
- 실행 단계에서 자바스크립트 엔진은 변수 값을 할당한다.
렉시컬 환경 (Lexical Environment)
- 함수의 렉시컬 환경은, 함수가 사용하는 변수들을 둘러싼 환경을 의미한다.
- 특정 변수의 값은 함수의 렉시컬 환경 안에서 찾을 수 있다.
- 렉시컬 환경은 실행 컨텍스트 안에 정의된 Variable Object로 이해할 수 있다.
생성 단계에서의 코드 실행
- 자바스크립트 엔진은 생성 단계에서 함수 선언문, 함수 표현식, 변수 등을 읽어 실행 컨텍스트에 저장한다.
- 변수의 경우, 실행 컨텍스트의 렉시컬 환경을 구성한다.
- 함수 선언문 외에 변수는 값이 저장되지 않는다.
- let, const 는 uninitialized
- var는 undefined
실행 단계에서의 코드 실행
- 자바스크립트 엔진은 변수에 값을 할당하는 구문을 만나면 실행 컨텍스트에 값을 저장한다.
- 그 외 코드를 한 줄씩 읽어 나가며 실행한다.
728x90
반응형
'Front-End' 카테고리의 다른 글
[JavaScript] 자바스크립트 내장 객체 (0) | 2023.03.30 |
---|---|
[JavaScript] 자바스크립트 호이스팅(Hoisting) (0) | 2023.03.29 |
[JavaScript] ES6 Rest, Spread Operator (0) | 2023.03.25 |
[JavaScript] 자바스크립트 클로저 (Closure) (0) | 2023.03.24 |
[JavaScript] 화살표 함수 / 일반 함수 에서의 this (0) | 2023.03.23 |