inflearn logo
강의

Course

Instructor

Frontend Masterclass

10. 변수 객체

Variable Object 질문

Resolved

173

hans

3 asked

0

안녕하세요, 좋은 강의 감사합니다.

실행 컨텍스트 부분에서 궁금한 점이 있어서 질문드립니다. 강의에서 Variable Object를 설명해주셨는데, 제가 개인적으로 찾아본 자료들에서는 ES2015부터 실행 컨텍스트가 Lexical Environment, Variable Environment, this binding으로 구성된다고 나와 있더라고요.

Variable Object는 그 이전 스펙에서 사용되던 용어인 것 같은데, 혹시 강의에서 이 개념을 선택해서 설명하신 특별한 교육적 의도가 있으셨을까요?

제가 아직 깊이 이해하지 못해서 그런데, 두 방식 중 어떤 것이 JavaScript 동작 원리를 학습하는 데 더 도움이 되는지, 또는 어떤 차이점들이 있는지 알려주시면 감사하겠습니다.

javascript react 함수형-프로그래밍 객체지향 next.js

Answer 1

0

hoonyhan

안녕하세요, 좋은 질문 남겨주셔서 감사합니다.

말씀해주신 대로 Variable Object(VO)Variable Environment(VE) 는 같은 실행 컨텍스트의 동작을 설명하는 개념이지만, 명세가 발전하면서 용어와 구조가 달라진 것입니다.

 

Variable Object (VO) — (ES3, 구개념)

  • 실행 컨텍스트가 생성될 때 함께 만들어지는 내부 객체로,

    • var 선언

    • 함수 선언

    • 함수 매개변수
      들이 VO에 등록됩니다.

  • 실행 컨텍스트의 생성 단계에서 이 값들이 VO에 채워지고,

  • 실행 단계에서는 이 VO를 참조하여 식별자를 조회합니다.
    즉, 당시 명세에서는 스코프를 단일 객체(VO)로 표현했다고 보시면 됩니다.

 

Variable Environment (VE) — (ES5 이후, 현대 개념)

  • VO 대신 Lexical Environment라는 더 정교한 구조가 도입되었습니다.

  • Lexical Environment는 두 가지로 이루어져 있습니다:

    1. Environment Record → 실제 변수, 함수, 매개변수가 저장되는 곳

    2. Outer Lexical Environment Reference → 부모 스코프를 가리키는 참조 (스코프 체인)

  • 이 중 Variable Environment는 특별히 var, 함수 선언, 함수 매개변수를 담는 Environment Record를 의미합니다.

  • let, const 같은 블록 스코프 변수는 별도의 Declarative Environment Record에 관리됩니다.

핵심 차이

  1. 명세의 진화

    • VO는 ES3 시대 개념

    • VE는 ES5 이후 도입된 Lexical Environment 체계의 일부

  2. 스코프 관리 방식

    • VO는 단일 객체로 스코프 관리

    • VE는 계층적 구조를 가지며 스코프 체인을 통해 관리

  3. let/const 처리

    • VO는 let/const 개념이 반영되지 않음

    • VE/Lexical Environment는 이를 위한 별도의 구조를 제공

강의에서 VO를 사용한 이유

강의에서는 교육적 단순화를 위해 Variable Object 개념을 먼저 사용했습니다.

  • VO는 “실행 컨텍스트가 변수를 모아두는 저장소”라는 감각을 직관적으로 잡는 데 유리합니다.

  • 이후 ES2015+ 명세에 나오는 Lexical Environment / Variable Environment 개념을 학습하면, VO로 배운 직관을 그대로 확장할 수 있습니다.

정리하면, VO는 이해를 돕기 위한 구개념, VE는 현대 명세의 정식 구조이고,
학습 순서는 VO → VE/Lexical Environment로 가는 것이 가장 효과적입니다.

깃권한요청드립니다

0

2

1

코드 버그

0

4

1

<div id="banner">배너 이미지</div> 관련 질문

0

7

1

fatal: repository 'https://github.com/gymcoding/my-marketplace.git/' not found

0

15

2

live server, korean 을 검색해도 아무것도 나오지 않음

0

13

1

커서질문

0

19

1

강의자료

0

17

1

SUPABASE에서 AOI 선택여부

0

16

2

클로드 코드 터미널 사용시 git, git 허브 활용 법

0

22

1

mcp.json파일 생성 X

0

19

2

강의 내용이 정신이없네요 ;;

0

43

2

제 컴퓨터에서는 Claude's plan이 아래와 같이 나오는데 괜찮은 건가요?

0

27

2

강의에서 사용하는 prompt

0

20

2

window 11 환경 + git bash 터미널 statusline 반영이 안됩니다 ㅠ

0

26

2

윈도우에서 Node js를 설치하고 싶어요

0

25

0

불변성을 지키며 수정 삭제를 할때도 Map이 유리한가요?

0

86

1

30강 Map 자막이 이상합니다.

0

62

1

추천패턴

0

82

1

원시 데이터 할당 방식

0

88

2

배포 관련 내용 추가될 예정이 있을까요?

0

160

1

학습자료는 따로 공유가 안되는건가요?

0

225

2

이벤트 루프 실행 관련

0

158

2

Map 강의 누락된 것 같습니다.

0

172

2

메모이제이션 뒷부분 짤린건가요?

0

234

2