본문 바로가기
자바스크립트

[Javascript] 실행컨텍스트

by 곰돌찌 2021. 6. 2.

자바스크립트에서 실행가능한 코드가 발생하기 위해 필요한 환경

** 실행가능한 코드 = 전역코드, 함수코드, Eval코드

 

자바스크립트 엔진이 코드를 실행하기 위해 실행에 필요한 정보를 수집함.

** 실행에 필요한 정보 : 변수 선언, 함수 선언, 스코프, this

 

실행 컨텍스트들은 물리적으로 stack의 형태로 관리됨.

실행 컨텍스트가 담긴 stack은 함수가 호출될때 마다 쌓이고 끝나면 사라짐


실행컨텍스트의 구조

  • 변수 객체
    • 객체에는 변수, 함수가 있고, 함수 실행 컨텍스트에는 인자(파라미터)도 포함됨
    • 함수일 때 는 활성객체, 전역일 때는 전역객체를 가리킴(요것들이 변수 객체라고 보면됨)
    • 실행에서 필요한 정보를 담음
  • 스코프체인
    • 실행컨텍스트의 해당되는 전역/함수가 참조할 수 있는 변수, 함수 선언 등의 정보를 담고 있는 객체의 리스트 (자기자신도 포함됨)
    • 즉, 참조할수 있는 함수에 대해 연결이 되어있는 것을 스코프 체인이라고 함.
  • this규칙
    • 처음에는 전역객체를 가리키고 있다가 함수 호출의 방식에 따라서 this에 할당될 값이 결정됨.

실행 컨텍스트 실행 순서

  • 스코프체인 생성과 초기화
  • 변수 객체 초기화
    • 함수일때는 매개변수 초기화
    • 코드 내의 함수 초기화(function xxx (){})형태 일때는 함수 호이스팅이 일어남
    • 코드 내의 변수 선언은 호이스팅이 일어남.
      • var는 선언과 초기화가 동시에 이루어지기 댸문에 변수의 값 설정은 값을 할당되는 코드가 실행될 떄 할당되고 그 전에는 undefined를 가리킴
      • const와 let은 선언과 초기화가 분리되어 일어남. const xxx;를 하기 전에는 선언은 되어있으나 초기화가 되어있지 않기 때문에 에러가 일어남(일시적 사각지대), const xxx로 설정한 코드 라인에서 초기화가 일어남!!!
  • this 설정

댓글