Just Do IT!

[JavaScript] 실행 컨텍스트 본문

개발 공부/JavaScript

[JavaScript] 실행 컨텍스트

MOON달 2022. 12. 3. 13:55
728x90
반응형

1. 실행 컨텍스트란?

  • 스택(stack) : Last in, first out
  • 실행 컨텍스트 : 실행할 코드에 제공할 환경 정보들을 모아놓은 객체
  • 콜 스택(call stack) 안에 실행 컨텍스트가 모아져 있다.
  • 가장 위에 쌓여있는 컨텍스트와 관련된 코드를 실행하는 방법으로 코드의 환경 및 순서를 보장 (LIFO)
  • 컨텍스트의 구성 방법
    1. 전역 공간
    2. eval() 함수
    3. 함수 ☞ 우리가 흔히 실행 컨텍스트를 구성하는 방법

 

실행컨텍스트 구성 예시

 

  • 실행 컨텍스트 객체
    • 생성(활성화) 시점 : 한 '실행 컨텍스트'가 콜 스택의 맨 위에 쌓이는 순간이 곧 현재 실행한 코드에 관여하게 되는 시점
    • 생성 시점에 JS 엔진은 해당 컨텍스트에 관련된 코드를 실행하는데 필요한 환경 정보들을 수집해서 실행 컨테스트 객체에 저장
    • 실행 컨텍스트에 담기는 정보
      1. Variable Envrionment
        • 현재 컨텍스트 내의 식별자 정보
        • 외부 환경 정보
        • 선언 시점 Lexical Envrionment의 snapshot (그 순간을 찍어 놓은 것)
      2. Lexical Envrionment
        • Variable Envrionment와 동일하나 변경사항이 실시간으로 반영
      3. This Binding
        • this 식별자가 바라봐야할 객체
        • this가 의미하는 게 무엇인지 생각

 

 

2. Variable Envrionment 와 Lexical Envrionment 비교

  • 담기는 내용은 동일하다
  • snapshot 유지 여부 : Variable Envrionment는 유지
  • 실행 컨텍스트를 생성할 때 Variable Envrionment에 정보를 먼저 담은 다음, 이를 그대로 복사해서 Lexical Envrionment를 만들고 이후엔는 주로 Lexical Envrionment를 활용
  • 구성 요소
    • 모두 동일 → envrionment Record와 outer Envrionment Reference로 구성
    • envrionment Record = record
    • outer Envrionment Reference = outer

 

 

3. Lexical Environment

  • 개요
    • 현재 컨텍스트와 관련된 코드의 식별자 정보들이 저장(수집) = 기록된다(record)
    • 수집 대상 정보 : 함수에 지정된 매개변수 식별자, 함수 자체, var로 선언된 변수 식별자 등
    • 컨텍스트 내부를 처음부터 끝까지 순서대로 훑어가며 수집 (코드가 실행되는 것 X)
  • 호이스팅
    • 변수 정보 수집을 모두 마쳤더라도 아직 실행 컨텍스트가 관여할 코드는 실행 전의 상태이다
    • = JS 엔진은 코드 실행 전 이미 모든 변수 정보를 알고 있는 것
    • 변수 정보 수집 과정을 이해하기 쉽게 설명한 '가상 개념'

호이스팅 규칙

1, 매개변수 및 변수에 대한 호이스팅

2. 함수 선언의 호이스팅

3. 함수 선언문, 함수 표현식

  • 함수 선언의 3가지 방식

  • 함수 선언문, 함수 표현식

  • 함수 선언문을 주의해야 하는 이유

  • 만약 함수 표현식이었다면
    • 잘 동작하지 않는다
    • 그렇지만 2번 개발자가 1번 개발자의 코드에 영향을 미치지 않음

 

 

4. Lexical Envrionment

  • 스코프 (Scope)
    • 식별자에 대한 유효범위
    • 대부분의 언어에서 존재하며, JavaScript에서도 존재
  • 스코프 체인
    • 식별자의 유효범위를 안에서부터 바깥으로 차례로 검색해나가는 것
  • outer Envrionment Reference (= outer)
    • 스코프 체인이 가능하도록 하는 것
    • 외부 환경의 참조 정부를 가지고 있는 것

 

스코프 체인에 대한 예제

 

 

+)

전역 변수 : 전역 공간에서 선언한 변수

지역 변수 : 함수 내부에서 선언한 변수

 

 

 

 


JS 심화 문법 강의를 듣고 정리한 것이다.

ch2의 내용이지만.. 다른 부분은 정리할 게 남아 있어서 그냥 ch2부터 정리했다.

728x90