inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 중고급: 엔진 핵심

4. 환경 레코드, 환경 레코드 구성, 글로벌 환경

질문 있습니다.

291

kimyongin

작성한 질문수 2

0

제가 이해한 2가지를 적어보면 아래와 같습니다.

1. 함수가 호출될 때 실행 컨텍스트가 만들어진다. 

2. 실행 컨텍스트가 만들어질 때 외부 렉시컬 환경 참조에 설정되는 것은 해당 실행 컨텍스트를 만들고(호출하고) 있는 실행 컨텍스트의 환경 레코드를 설정한다.

예를들어 아래 샘플코드에서는 add(200)이 호출될때 만들어지는 실행 컨텍스트의 외부 렉시컬 환경 참조에는 outer0() 실행 컨텍스트의 환경 레코드{value0:300, add:function, get:function}가 설정 된다. 최종적으로 add(200)의 실행 컨텍스트는 아래와 같다

이게 맞는 설명 인가요?

outer0() 실행 컨텍스트 : {
	렉시컬 환경 컴포넌트 : {
		환경 레코드 : {
			value0 : 300,
			add : function,
			get : function
		}
	}
}

add(200) 실행 컨텍스트 : {
	렉시컬 환경 컴포넌트 : {
		환경 레코드 : {
			param : 200
		},
		외부 렉시컬 환경 참조 : { 
			// outer0 실행컨텍스트의 환경 레코드를 참조
			value0 : 300,
			add : function,
			get : function
		}
	}
}
function outer0() {
  var value0 = 300;
  function add(param) {
	value0 += param;
  };
  var get = function() {
	return value0;
  }    
  add(200);
  console.log(get());
};
outer0();

javascript

답변 4

0

김영보

괜찮습니다. 이렇게 스스로 알아가면 됩니다. 좋은 모습입니다. 응원합니다. 

0

kimyongin

넵. 앞에서 다시 보고 왔는데 "외부 렉시컬 환경 참조에 function 오브젝트의 [[scope]]를 설정" 이라고 적혀있는걸 보고. 제 설명이 틀린걸 확인습니다 ㅠㅜ.

scope 와 context 를 함께 생각하는게 어렵네요 

0

kimyongin

위 설명이 맞다면 아래 샘플코드의 add(200)의 실행컨텍스트는 어떤 형태가 되나요? 

function outer2() {
  var value2 = 100;
  function outer1() {
    var value1 = 200;
    function outer0() {
      var value0 = 300;
      function add(param) {
        value2 += param;
      };
      var get = function() {
        return value2;
      }    
      add(200);
      console.log(get());
    };
    outer0();
  }
  outer1();
}
outer2();

0

김영보

진도를 나가면서 스스로 검증해보세요. 그래야 확실하게 자신감을 갖게 됩니다. 비기너가 아니니까 스스로 검증하는 훈련도 필요합니다. 이러한 훈련이 굳건한 자산이 될 것입니다. 

getBook 실습 예제중 질문드립니다!

0

419

1

__proto__ 에 대해 질문드립니다

0

315

1

호이스팅 코딩시간 풀이

0

358

1

[코딩 시간] JS {name: value} 이해

0

340

1

[[Scope]] 와 [[Environment]]는 같은 개념인가요

0

345

0

slice

0

239

0

스코프가 뭔가요?

0

307

0

어려워요

0

255

0

강사님 변수이름에 get을 붙이는 이유를 알고싶습니다.

0

339

1

[정리 시간] 정확하게 이해했는지 확인 부탁드립니다.

0

300

0

스코프 질문

0

253

1

fn 함수와 book.get 함수 차이 질문드립니다...ㅠㅠㅠ

1

542

1

this binding 논리 질문입니다.

0

279

1

파라미터 값을 매핑할 때

0

251

0

ES6부터는 this 바인딩을 환경 레코드에서 참조한다고 들었습니다.

0

209

0

정리시간 입니다.

0

228

0

정리시간입니다.

6

269

0

정리 시간 입니다.

0

202

0

정리시간입니다.

6

227

0

코딩시간 입니다.

1

222

0

선생님 스코프 질문이 있습니다.

1

240

0

[정리시간] 해보았습니다!

0

175

0

선생님 질문있습니다!!

0

159

0

질문드려도 될까요 선생님..

0

216

0