Among Us - Crewmates
 

[JavaScript] 자바스크립트 엔진, 변수 정의 과정

728x90

자바스크립트 엔진

  • 자바스크립트 엔진은 자바스크립트 코드를 읽어 실행하는 프로그램이다.
  • 작성한 자바스크립트 코드는 자바스크립트 엔진을 통해 파싱되고 실행된다.
  • Chrome 브라우저의 경우 V8 엔진을 사용한다.
  • node.js 는 브라우저 외의 환경에서 자바스크립트 코드를 실행하도록 하는 프로그램이다.
  • node.js는 여러 프로그램으로 구성되며, 자바스크립트 코드를 읽는 프로그램으로 V8을 사용한다.
  • 브라우저 환경과 node.js 환경은 같은 자바스크립트 코드를 작성해도 다르게 동작할 수 있다.

 

자바스크립트 코드 실행

  • 자바스크립트 엔진은 코드 실행 전 실행 컨텍스트를 생성한다.
  • 실행 컨텍스트는 두 단계를 통해 생성된다.
  • 생성 단계에서 자바스크립트 엔진은 변수 선언을 읽는다.
  • 실행 단계에서 자바스크립트 엔진은 변수 값을 할당한다.

 

렉시컬 환경 (Lexical Environment)

  • 함수의 렉시컬 환경은, 함수가 사용하는 변수들을 둘러싼 환경을 의미한다.
  • 특정 변수의 값은 함수의 렉시컬 환경 안에서 찾을 수 있다.
  • 렉시컬 환경은 실행 컨텍스트 안에 정의된 Variable Object로 이해할 수 있다.

 

생성 단계에서의 코드 실행

  • 자바스크립트 엔진은 생성 단계에서 함수 선언문, 함수 표현식, 변수 등을 읽어 실행 컨텍스트에 저장한다.
  • 변수의 경우, 실행 컨텍스트의 렉시컬 환경을 구성한다.
  • 함수 선언문 외에 변수는 값이 저장되지 않는다.
    • let, const 는 uninitialized
    • var는 undefined

 

실행 단계에서의 코드 실행

  • 자바스크립트 엔진은 변수에 값을 할당하는 구문을 만나면 실행 컨텍스트에 값을 저장한다.
  • 그 외 코드를 한 줄씩 읽어 나가며 실행한다.
728x90
반응형