코어자바스크립트 2장<실행 컨텍스트>

김정현·2021년 1월 17일
0
post-thumbnail

1. 실행컨텍스트

  • 실행할 코드에 제공할 정보들을 모아 놓은 객체
  • 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고
    이를 콜스택에 쌓아 올린다.

1-1 실행컨텍스트가 생성되는경우

  1. javascript 실행 시작시 (전역컨텍스트)
  2. eval()함수
  3. 함수 실행시

전역컨텍스트는 자동 생성이 되고, eval()은 사용을 권장하지않기때문에
실행컨텍스트 구성방법은 함수를 실행하는것이 유일하다.

1-2 실행컨텍스트가 담고 있는 정보

  1. Variable Environment → 현재 컨텍스트 내의 식별자들에 대한 정보
  2. Lexical Environment → Variable Environment 와 동일하지만 변경사항이 실시간으로 반영
  3. ThisBinding → 식별자가 바라봐야 할 대상 객체

2. 호이스팅

  • 식별자들을 최상단으로 끌어올리는 것을 뜻한다.
  • 식별자만 끌어올리고 할당 과정은 그대로 남겨둔다.
함수 선언문
function a(){
 /* .... */
}

함수 표현식
var b = function(){
 /* .... */
}

함수 선언문 → 내부 코드까지 전체를 호이스팅
함수 표현식 → 할당 과정은 그대로 두고 선언부만 호이스팅


3. 스코프

  • 식별자에 대한 유효범위를 뜻한다.
  • 식별자의 유효성을 검사하기 위해 안에서부터 바깥으로 유효범위를 탐색해 가는것이 스코프 체인 이다.

3-1. 스코프 체인 과정

  • A함수 내부에 B를 ,B함수 내부에 C함수를 선언할 경우
    C : outerEnvironmentReference —> B : Lexical Environment
    B : outerEnvironmentReference —> A : Lexical Environment

↑같이 단방향 연결리스트의 형태로 참조한다. 따라서 가장 가까운 요소부터 차례로 접근하기 때문에 여러
스코프에서 동일한 식별자를 선언할 경우 스코프 체인상에서 가장 먼저 발견된 식별자에만 접근 가능하다.

  • 이후 발견될 식별자에는 접근할 수 없으며 이를 변수 은닉화 라고 한다.

0개의 댓글