개발/JavaScript

[JavaScript] 코어 자바스크립트 - 2. 실행 컨텍스트

알파카털파카 2023. 2. 26. 16:28

1. 실행 컨텍스트란 무엇인가요?

코드가 실행되는 데에 필요한 환경 정보가 담긴 객체 

 

2. 실행 컨텍스트의 환경에 대해서 설명해 주세요.

실행 컨텍스트는 3가지로 구성

1. VariableEnvironment

2. LexicalEnvironment

3. ThisBinding

 

3. 실행 컨텍스트의 생명주기에 대해 설명해 주세요.

실행 컨텍스트는 함수가 실행될 때 생성됨

VariableEnvironment에서는 식별자를 수집

VariableEnvironment를 복사해서 LexicalEnvironment가 만들어짐

LexicalEnvironment에서는 식별자의 데이터에 변화가 생기면 실시간으로 반영

코드가 다 실행되고 함수가 종료되면 실행 컨텍스트도 소멸

 

4. LexicalEnvironment는 무엇인가요?

LexicalEnvironment는 2가지로 구성

1. environmentRecord : 식별자를 순서대로 수집해 상위로 끌어올리는 호이스팅이 발생

2. outerEnvironmentReference - 현재 컨텍스트 관련이 있는 외부 컨텍스트의 식별자 정보를 참조

 

5. var, let, const의 변수할당 과정에서 실행 컨텍스트와 호이스팅이 어떻게 일어나는지 설명해 주세요.

var, let, const의 공통점 : 실행 컨텍스트의 environmentRecord에서 변수 선언부가 호이스팅됨 

var : LexicalEnvironment 생성되면서 선언과 동시에 undefined 초기화

let, const : let, const 변수는 LexicalEnvironment가 활성화될 때 생성되지만, 실제 변수가 평가되기 전까지 접근할 수 없음

undefined를 할당하지 않고 초기화를 마침

 

6. const 키워드를 선언 전에 호출하면 어떻게 되나요?

Uncaught ReferenceError 발생

const는 선언부가 호이스팅 되지만, var와 달리 선언과 동시에 초기화되지 않기 때문에 변수 선언 전에 호출하면 오류 발생

 

7. 스코프에 대해서 설명해 주세요.

식별자에 대한 유효범위

 

8. outerEnvironmentReference와 스코프 체인을 연관지어서 설명해 주세요.

outerEnvironmentReference에서는 식별자를 찾는 작업이 수행됨

스코프 체인은 식별자를 찾아서 외부 스코프로 한 단계씩 타고 나가는 것

내부에서 외부로 나가는 것은 가능하지만, 외부에서 내부로 들어오는 것은 불가능