코어자바스크립트_실행 컨텍스트

·2022년 6월 8일
0
post-thumbnail

02 실행 컨텍스트

Execution Context 정의

Execution : 실행

Context : 문맥/환경 (코드에 영향을 주는 주변 코드, 변수들 )

Execution Context : 코드를 실행하는데에 필요한 배경이 되는 환경

자바스크립트에서 동일한 조건을 지닐 수 있는 조건 : 4가지

전역공간(거대한 함수 공간), 함수, eval(문제 덩어리 빼자), module(함수와 동일)

→ 결론은 실행 컨텍스트를 구성하는 방법은 함수를 실행 하는 것뿐

→ 함수를 실핼할 때 필요한 환경정보를 담은 객체

ES6에서 추가된 블록 스코프인 let, const에 대해서 별개의 독립된 공간으로서의 역할은 가지지만

별개의 실행 컨텍스트를 생성하지는 않는다.

call statck : 코드 실행에 관여하는 스택

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

실행 컨텍스트의 내부

VariableEnvironment, LexicalEnvironment : 현재 환경과 관련된 식별자 정보들이 담김

VariableEnvironment : 식별자 정보 수집 (변화 반영 X)

LexicalEnvironment : 각 식별자의 데이터 추적 (변화 반영 O)

LexicalEnvironment

어휘적/ 사전적 환경 : 실행 컨텍스트를 구성하는 환경 정보들을 모아 사전처럼 구성한 객체

영한 사전

able : 할 수 있는

apple : 사과

arrow : 화살표,

실행 컨텍스트 A 환경 사전

내부 식별자 a : 현재 값은 undefined

내부 식별자 b : 현재 값은 20

외부 정보 : D를 참조

LexicalEnvironment

  • environmentRecord : 현재 문맥의 식별자 (hoisting) → 환경 기록
  • outerEnvironmentReference : 외부 식별자 (scope chain) → 외부 환경 참조

environmentRecord

호이스팅은 실제하는 현상이 아니고 environmentRecord 의 정보 수집 과정을 좀 더 쉽게 이해하기 위해서 만든 허구의 개념

호이스팅

실행 컨텍스트의 맨 위로 식별자 정보를 끌어올리다.

함수 선언문은 전체를 끌어올린다.

함수 표현식은 var sum 만 끌어 올린다.

// 함수 선언문 
function sum(a,b) {return a+b}

// 함수 표현식
var sum = function(a,b) {return a+b}

outerEnvironmentReference

외부의 LexicalEnvironment를 참조

현재 문맥에 관련 있는 외부 식별자 정보

스코프 체인

스코프는 변수의 유효범위 이다.

실행 컨텍스트가 수집해 놓은 정보만 접근할 수 있고

그 변수는 실행 컨텍스트 내부에서만 존재

var a 를 찾는데

inner 에 var a가 없으면

outer 에 var a를 찾고 outer 에도 var a가 업으면

전역에서 var a 값을 찾아 갖고 온다.

스코프 체인 : 가까운 곳으로 부터 찾아서 가장 먼저 찾아진 것만 접근 가능

profile
프론트앤드 개발자

0개의 댓글