inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Lớp học chuyên sâu về Frontend

10. 변수 객체

Variable Object 질문

Đã giải quyết

160

hans

3 câu hỏi đã được viết

0

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

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

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

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

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

Câu trả lời 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

5

1

디스코드 소통창구는 없어졌나요 ??

0

7

1

cd 명령어가 안들어요

0

8

1

클로드 데스크앱과의 차이

0

10

1

nmp run build의 기능

0

5

1

plan mode 개발 계획안 확인 불가

0

13

2

20번강좌에 대한 질문입니다.

0

6

1

명시적 타입 선언(콜론 타입 선언)과 as 타입 단언 차이

0

10

1

max x5 플랜을 결제했습니다.

0

17

1

클로드 초기 설정

0

16

1

사용자 스코프 설정 파일 적용 문제

0

10

1

클로드코드 유료플랜 할인 방법이 있을까요?

0

30

0

싱글턴패턴

0

13

1

API Error : 400 에러의 원인과 해결방법이 궁금합니다!!

0

22

2

퍼미션 권한 설정 문의

0

26

2

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

0

55

1

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

0

44

1

추천패턴

0

69

1

원시 데이터 할당 방식

0

70

2

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

0

146

1

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

0

199

2

이벤트 루프 실행 관련

0

144

2

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

0

154

2

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

0

210

2