Execution Context

Geonil Jang·2021년 10월 12일
0

실행 컨텍스트란 + this 바인딩

코드를 실행하는 데에 필요한 배경이되는 조건/환경

  1. 동일한 조건/환경을 지니는 코드뭉치
    • 전역공간 (거대한 함수 공간)
    • 함수
    • eval
    • module

context? 코드의 배경이 되는 조건, 환경

LexicalEnvironment

  1. environmentRecord
    • 현재 문맥의 실별자 정보 수집 (호이스팅)
    • 현재 컨텍스트에서 선언되어 있는 식별자들이 무엇이 있느냐라는 정보를 코드 순서대로 수집하는 일

호이스팅? - 실행 컨텍스트가 생성되자마자 하는 일!
실별자의 정보를 위로 끌어 올리는 현상

  1. outerEnvironmentReference
    • 외부 환경에 대한 참조
      - 현재 문맥에 관련 있는 외부 식별자 정보 ( scope chain = 변수의 유효 범위)

call stack

현재 어떤 함수가 동작중 인지, 다음에 어떤 함수가 호출될 예정인지등을 제어하는 자료구조

this 바인딩

실행컨텍스트가 생길때 this바인딩 한다.
this? 함수를 실행한 주체

  • 함수가 호출될 때! 호출하는 방식에 따라 다르다!
    - 전역공간에서: window / global
    • 함수 호출시: window / global
    • 메서드 호출시 메서드 호출의 주체 "." 앞
      • 원래는 함수인데 어떤 객체와 '관련된'동작을 하게 되면
    • callback 호출시: 기본적으로는 함수내부에서와 동일
    • 생성자함수 호출시:인스턱스

callback function

제어권 위임
- 제어권을 넘겨받은 대상이 처리하게 된다.

클로저

[1] 내부함수와 LexicalEnvironment의 조합

  • A의 lexical envrionment와 내부함수 B의 조합에 의해서 나타는 특별한 현상
    [2] 컨택스트 A에서 선언한 변수를 내부함수 B에서 참조할 경우에 발생하는 특별한 현상
    [3] 내부함수의 outerEnvironmentReference 외후 함수의 environmentRecord를 참조할때 생기는 현상
function outer(){
  let a = 1;
  function inner(){
    a++
  }
	return inner
}
outer();

컨켁스트 A에서 선언한 변수 a를 참조하는 내부함수 B를 A의 외부로 전달할 경우, A가 종료된 이유에도 a가 사라지지 않는 현상

profile
takeaways

0개의 댓글