[JS] 실행 컨텍스트 - Variable/Lexical Environment

이승혜·2021년 9월 3일
0

JS/JQUERY

목록 보기
4/10
post-thumbnail

이 글은 📕코어 자바스크립트 책을 바탕으로 정리한 글입니다.

VariableEnvironment

VariableEnvironment에 담기는 내용은 LexicalEnvironment와 같지만 최초 실행 시의 스냅샷을 유지한다는 점이 다르다.
실행 컨텍스트를 생성할 때 VariableEnvironment에 정보를 먼저 담은 다음, 이를 그대로 복사해서 LexicalEnvironment를 만들고, 이후에는 LexicalEnvironment를 주로 활용하게 된다.
VariableEnvironment와 LexicalEnvironment의 내부는 environmentRecordouterEnvironmentReference로 구성되어있다.
자세한 내용은 LexicalEnvironment를 통해 살펴보자

🤔 조금 쉽게 설명하자면, LexicalEnvironment의 값은 실행 중에 변하지만, VariableEnvironment는 값이 변하지 않는다는 것이다.

  • Environment Record : 현재 실행 컨텍스트 내에서 호이스팅이 되는 것(var, 함수선언문)등을 저장
  • outerLexicalEnvironment Reference : outer envirionment

LexicalEnvironment

LexicalEnvironment에 대한 한국어 번역은 문서마다 다른데 '어휘적 환경', '정적 환경'이라는 단어가 가장 많이 등장한다.
'어휘적'은 lexical을 영어사전에 대입해서 치환한 것으로 의미가 와닿지 않고, '정적'이라는 말은 수시로 변하는 환경 정보를 의미하는 LexicalEnvironment에 대한 적절한 번역이라고 볼 수 없다.
이 책의 저자의 말을 빌리자면, '사전적인'이라는 말이 더욱 어울리는 표현이라 할 수 있다.
"현재 컨텍스트 내부에는 a,b,c와 같은 식별자들이 있고 그 외부 정보는 d를 참조하도록 구성돼 있다"라는, 컨텍스트를 구성하는 환경 정보들을 사전에서 접하는 느낌으로 모아둔 것이다.

  • Environment Record : let, const로 선언된 변수 등
  • outerLexicalEnvironment Reference : VariableEnvironment

다음 페이지에서 environmentRecord와 호이스팅에 대해 자세히 다뤄보자

profile
더 높이

0개의 댓글