인프런 커뮤니티 질문&답변

열씨미살자!님의 프로필 이미지

작성한 질문수

코어 자바스크립트

(예전자료 - 삭제) 실행 콘텍스트

const, let

작성

·

225

0

안녕하세요. 강사님. 강의 잘 듣고 있습니다.

강의를 듣다가 2가지 궁금한점이 있어서 질문 남깁니다.

1. const, let과 같은 경우 해당 변수의 초기화를 따로 하는걸로 알고 있습니다. 그래서 처음에 실행컨텍스트가 식별자들의 정보를 environmentRecord에 넣을때 const, let의 변수들은 값이 없어서 넣을 수 없기 때문에 못넣는것인가요?

2. https://poiemaweb.com/js-execution-context 라는 블로그를 보면 Scope Chain이라는 객체와 Variable Object라는 것이 존재한다고 나와있는데요. 해당 블로그에서 말하는 것은 실제 코드에서 객체로 관리하게 되면 이런 프로퍼티를 가진다는 것이고 추상적인 개념으로 보자면 현재 강의에서 나오는 개념이라고 이해하면 될까요?  

Variable Object = LE의 environmentRecord

Scope Chain = LE의 outerEnvironmentReference의 집합

답변 2

0

저도 이 부분이 궁금했는데 그럼 const, let으로 정의한 변수들은 실행 컨텍스트 내에 저장이 안되는 것인가요?

정재남님의 프로필 이미지
정재남
지식공유자

저장 됩니다. ES6 강의를 들으시거나 let, const로 검색해보시기 바랍니다.

아고 ES6 강의에 있는 내용이었군요. 다행히(?) 전에 강의를 구매해뒀었네요! 바로 들으러 가겠습니다!! 답변 감사합니다!!

0

정재남님의 프로필 이미지
정재남
지식공유자

1. 본 강의는 ES6 이전의 환경에 대해서만 다루는 것으로 ES6에 대한 질문은 범위밖입니다. 그래도 간략하게 답변을 드리자면, '넣을 수 없어서 못넣는것'이 아니라 처음부터 '초기화하도록 선언한 코드의 위치에 이르러 비로소 초기화하도록 설계'했기 때문입니다. var의 경우 예를 들어 

var a;

라고만 해도 LE 생성시 자동으로 undefined를 할당하여 '초기화'를 해버립니다. 초기화에 대한 동작 방식 자체가 달라진 것이라고 이해하시면 되겠습니다.

2. 소개해주신 블로그글의 서두에 '이 포스팅의 내용은 ES3를 기반으로 하고 있다.' 라고 하고 있습니다. 현재의 ECMASCript2015+ 체제 하에서는 맞지 않는 내용입니다. 해당 링크 내용은 완전히 잊고 새로 공부하세요.

답변감사합니다. 해당 블로그에서 놓쳤던 부분이었네요!