[21일] JS 실행컨텍스트

반응형

실행컨텍스트 ?

실행할 코드에 제공할 환경정보를 모아놓은 객체 이다.
자바스크립트에서는 실행 컨텍스트가 활성화되는 시점에 호이스팅, 외부환경정보를 구성, this값을 설정 하게되는 특징이있어 다른언어와 차이를보인다.

함수가 실행됬을때 call stack 에 실행 컨텍스트 객체들이 순차적으로쌓이게됨.

실행컨텍스트 객체 ?

해당 컨텍스트 관련된 코드를 실행하는데 필요한 환경정보를 가지고있다.

  1. variableEnvironment

    • 현재 컨텍스트 내의 식별자 정보
    • 외부 환경 정보
    • 선언 시점 lexicalEnvironment 의 snapshot 찍고 유지함
  2. lexicalEnvironment

    • variableEnvironment 동일하나 변경사항이 실시간으로 반영됨
  3. thisbinding

    • this 식별자가 바라봐야할 객체

    실행컨텍스트를 생성할때 VE 에 정보를 먼저 담고 , 이를 복사해서 LE 만든후 주로 LE를 활용함.

VE 와 LE 의 구성요소

environmentRecord 와 outerEnvironmonetReference 로 구성된다.
주로 record 와 outer 라고 부른다.

environmentRecord

현재 컨텍스트와 관련된 코드의 식별자 정보를 저장함
함수에 지정된 매개변수 식별자, 함수자체, var 로 선언된 변수 식별자 정보가 저장된다.
컨텍스트 내부를 처음부터 끝까지 순서대로 훑어가며 수집하게된다.

outerEnvironmonetReference

스코프체인이 가능하도록 외부환경의 참조정보를 가지고있는것

내부함수에서 변수를찾는데 record 부터 검색 없다면 ? outer 안에있는 외부 참조정보를 가지고
외부참조정보안에있는 record 안에서 찾게됨 또 없다면 ? outer 안에있는 외부참조정보를 타고계속 찾게된다는뜻

스코프 체인 ?

식별자의 유효범위 안에서부터 바깥으로 차례로 검색해나가는것

반응형

'프론트엔드 > JavaScript' 카테고리의 다른 글

[23일] array method  (1) 2022.12.01
[22일] this  (0) 2022.12.01
[16일차] SPA  (2) 2022.11.21
[Deepdive] 22장 this  (0) 2022.04.13
[Deepdive] 21장 빌트인객체  (0) 2022.04.11