오늘 배운 내용

이미지 출처

Variable Object (VO/변수객체)

  • 실행 컨텍스트가 생성

  • VO 생성. 자바스크립트 엔진은 객체를 생성하고 코드 실행에 필요한 여러 정보들을 그 안에 담는다. 이 객체가 바로 변수객체이다.

  • VO는 변수, 매개변수(parameter), 인수 정보(arguments),함수 선언(함수 표현식은 제외) 를 담는 객체

  • VO는 프로퍼티. 따라서 대응되는 값을 가짐. 이 값은 다른 객체를 가리킴. 이 객체는 전역컨텍스트의 경우와 함수 컨텍스트의 경우 다른 모습을 하고 있음.

  • 전역컨텍스트의 VO의 값이 가리키는 객체는 전역 객체(GO)

  • 함수컨텍스트의 VO의 값이 가리키는 객체는 활성 객체(AO)

Scope Chain(SC)

일종의 리스트. 특징은 VO가 가리키고 있는 객체를 원소로 가리키고, 추가로 상위 컨텍스트의 VO가 가리키고 있는 객체를 원소로서 가리킴. 그렇게 되면 맨 마지막 컨텍스트는 전역 컨텍스트가 되고, SC의 마지막 원소가 가리키는 객체는 GO가 되겠지.

스코프 체인은 변수를 검색하는 메커니즘. 낮은 인덱스의 SC 원소가 가리키는 AO에서부터 함수 실행 중에 만난 변수를 검색한다.

즉, 함수 내부->함수 외부->그 외부 함수의 외부->....순으로 변수가 있는지 없는지를 검색한다.

느낀 점

실행 컨텍스트를 이해하면, 코드를 더 잘 읽어낼 수 있을 것 같은 확신이 든다. TIL도 점점 쓰는 것에 망설임이 없어지고 있다. 마음의 짐이 점점 덜어지고 있다!

참조

profile
인사이트 있는 개발자가 되고 싶어요

0개의 댓글