실행 컨텍스트에 대해 설명해주세요.

최관수·2023년 9월 9일
0

기술면접

목록 보기
9/58

내용 정리

  • 실행 컨텍스트는 코드를 실행하는데 필요한 환경을 제공하는 객체라고 할 수 있습니다. 여기서 환경이라고 하면 코드를 실행에 영향을 주는 조건이나 상태를 말하는데, 식별자 결정을 더욱 효율적으로 하기 위한 수단으로 필요한 정보를 한데 모아 제공하는 객체가 실행 컨텍스트입니다.
  • 예컨대 var를 선언하고 최상단에 var를 console.log로 찍어봤을 때 에러가 나지 않고 undefined 찍히는 호이스팅이 발생하는데, 이런 호이스팅이 생기는 이유는 자바스크립트 엔진이 먼저 전체 코드를 스캔하면서 변수 같은 정보를 실행컨텍스트에 기록해놓기 때문입니다. 이때 나오는 개념이 실행 컨텍스트입니다. (물론 console.log 또한 내장함수이기 때문에 이 함수의 실행 컨텍스트 또한 생기는 게 맞습니다)
  • 이때 var를 기록해놓는 곳이 바로 환경 레코드(Environment Record)로 식별자와 식별자에 바인딩된 값을 기록해두는 객체입니다.
  • 또한 스코프 체이닝을 위해 외부 환경 정보를 구성하는데, 외부 환경 참조(Outer Environment Reference)는 선언되었을 당시의 상위 Lexical Environment를 참조합니다. 그래서 자바스크립트 엔진은 새로 생성된 실행 컨텍스트에 바깥 렉시컬 환경으로 돌아갈 수 있는 outer를 남겨 놓습니다. 그래서 필요한 경우에 이전 실행 컨텍스트의 환경레코드에 저장된 식별자로 참조할 수 있게 됩니다.
  • 식별자 결정(Identifier Resolution - 코드에서 변수나 함수의 값을 결정하는 것)을 하고자 할 때 현재 활성화된 실행 컨텍스트의 환경 레코드를 찾고, 바깥 렉시컬 환경에서 찾아보고, 끝내 없으면 전역 실행 컨텍스트까지 찾게 됩니다. 이러한 과정에서 사용되는 개념이 실행 컨텍스트라고 할 수 있습니다.
  • 식별자 결정을 진행할 때 변수 섀도잉(Variable Shadowing)이 발생하는데, 동일한 식별자로 인해 상위 스코프에서 선언된 식별자의 값이 가려지는 현상을 말합니다.
  • 식별자를 결정할 때 활용하는 스코프들의 연결리스트를 스코프 체인(Scope Chain)이라고 하고, 이러한 과정 자체를 스코프 체이닝이라고 합니다.

꼬리 질문

  • 렉시컬 환경에 대해 설명해주세요.
  • this binding에 대해 설명해주세요.
  • 클로저와 호이스팅에 대해 설명해주세요.

참고자료

profile
평소엔 책과 영화와 음악을 좋아합니다. 보편적이고 보통사람들을 위한 서비스 개발을 꿈꾸고 있습니다.

0개의 댓글