본문 바로가기

Javasciprt/Execution Context

Lexical Environment 종류

이 글은 ECMAscript 2017을 기준으로 작성된 글입니다.

오타, 오역, 부정확한 표현/정보가 있으면 지적해 주시면 감사하겠습니다.


지난번 맛보기에서 하지 못했던 종류를 슬쩍 들고 왔다.

오늘의 내용은 Lexical Environment의 종류이다.

 

 


오늘의 대상

오늘은 아래 소개할 Lexical Environment의 3가지 종류에 대해 알아보고자 한다.

 

  • Global Environment
  • Module Environment
  • Function Environment

Global Environment

Global Environment는 우리가 지난번에 이야기했던 Lexical Environment의 구성요소 중 outer Lexical Environment가 null인 Lexical Environment이다. 이 Global Environment의 Environment Recode에는 식별자-값 쌍들로 미리 채워질 수 있으며, Global Environment의 식별자-값 쌍의 일부를 제공하는 Global object와 연관이 되어 있다. 이는 추후 Environment Recode를 설명할 때 추가 설명할 예정이다.

 

Module Environment

Module Environment는 Javascript의 최상위 Module에 대한 연관을 가지는 Lexical Environment이다. Module Environment의 outer Lexical Environment는 Global Environment이다.

Module에 대한 설명은 연결된 블로그를 참조하기 바란다. Module Scope나 Module Record 같은 것은 추후 서술하겠다.

 

Function Environment

Function Environment는 ECMAScript의 Function Object를 호출하는 것과 같은 Lexical Environment이다. 새로운 this 연관을 생성하며, super method를 호출하기 위한 필요 상태도 가지고 있다.

this는 여기, super method는 여기

 

 


종류 정리

이번에는 종류를 찾아봤다.

Lexical Environment의 종류는 3가지로, 'Global, Module, Function Lexical Envrionment'가 그것이다.

이번에 다룬 내용이 길지 않아 구체적인 정리는 하지 않겠다.


뭔가 이번에는 글 쓰는데 오래 안 걸렸는데 (차피 번역 수준이라...) 찾아보다 보니 '야크털을 좀 깎아서' 시간이 걸렸다.

혹시 추가적으로 공부하고자 하는 분들은 아래 참조를 찾아보시기 바란다.

다음으로 죽죽 시리즈를 이어나갈 거다. 추후에 로더랑 모듈로 시리즈를 열 것 같다.

 

참조

ECMAScript 2017의 8장의 1번 - https://www.ecma-international.org/ecma-262/8.0/index.html

 

Module

모듈 - https://helloworldjavascript.net/pages/293-module.html

JavaScript Module System-https://velog.io/@doondoony/JavaScript-Module-System

ES modules: 만화로 보는 심층 탐구 - https://ui.toast.com/weekly-pick/ko_20180402/

 

This

this - https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/this

JavaScript - this에 대해 알아보자 - https://velog.io/@surim014/JavaScript-this%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

[javascript] this는 어렵지 않습니다. - https://blueshw.github.io/2018/03/12/this/

 

Super

super - https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/super

Why Do We Write super(props)? - https://overreacted.io/why-do-we-write-super-props/