[JavaScript] 실행 컨텍스트 요약

Narcoker·2024년 2월 2일
0

JavaScript

목록 보기
53/55
post-custom-banner

  • 코드는 평가, 실행(런타임) 단계로 진행되는데 렉시컬 환경은 평가 단계 이전에 생성
  • 평가 시 var로 선언한 변수는 undefined, 함수 선언문은 함수 코드 내용

전역 렉시컬 환경

  • 객체 환경 레코드
    • BindingObject: var 로 선언한 변수 - undefined, 함수 선언문 - 코드 내용
  • 선언적 환경 레코드 : const, let 선언한 변수 - uninitialized
  • this 바인딩 : 전역 객체(global 혹은 window)
  • 외부 렉시컬 환경 참조 : 상위 렉시컬 환경 참조

함수 렉시컬 환경

  • 함수 환경 레코드 : var, const, let 으로 선언한 변수
  • this 바인딩 : 전역 객체(global 혹은 window)
  • 외부 렉시컬 환경 참조 : 상위 렉시컬 환경 참조

블록 렉시컬 환경

  • 선언적 환경 레코드 : const, let 으로 선언한 변수
    (var로 선언한 변수는 블록이 선언된 함수(또는 전역) 렉시컬 환경의 함수 환경 레코드에 저장)
function foo(){
	if(true){
		var x = 1;
		// x는 if 블록 렉시컬 환경의 선언적 환경 레코드가 아닌 
		// foo 함수 렉시컬 환경의 함수 환경 레코드에 저장	
	}
  • 외부 렉시컬 환경 참조 : 상위 렉시컬 환경 참조

실행 컨텍스트 > ㅁㅁ 렉시컬 환경 > 환경 레코드


함수 실행 컨텍스트에서 호출된 console.log(a+b+c)

  1. console 객체 찾기
  • 함수 렉시컬 환경의 함수 환경 레코드에서 검색
  • 없으면 상위 렉시컬 환경으로 이동
  • 전역 렉시컬 환경에 도달한 경우 객체 환경 레코드 -> BindingObject -> 전역 객체 에서 검색
  1. log 메서드 검색
  • console 객체 에서 검색
  • 없으면 찾을때 까지 .proto 로 이동
  1. a+b+c 평가
  • a, b, c 식별자를 스코프 체인을 통해서 검색
  1. 메서드 실행
profile
열정, 끈기, 집념의 Frontend Developer
post-custom-banner

0개의 댓글