JavaScript의 실행 컨텍스트

posinity·2023년 6월 20일
0

JavaScript

목록 보기
30/31

자바스크립트를 실행시키면 콜스택이라는 통에 전역 실행 컨텍스트를 담음.

함수가 실행되면 함수 실행 컨텍스트를 담음
위에서 본(가장 최근에 담긴) 컨텍스트가 활성화됌.
실행이 되면 하나씩 사라짐

마지막에 전역 컨텍스트만 남아있으면 전역 컨텍스트도 사라짐

1. Record로 호이스팅 이해하기

호이스팅 : 선언문이 마치 최상단에 끌어올려진 듯한 현상

자바스크립트 엔진이 먼저 코드를 스캔하면서
변수를 실행 컨텍스트 레코드에 기록해두기 때문임

변수 호이스팅



생성 단계 : 선언문만 실행해서 환경 레코드에 기록해두는 단계


생성 단계 후 실행단계 실행


var는 선언과 초기화가 동시에 이루어진다 (undefined)

하지만 let const는 값을 초기화하지는 않는다. (선언만 진행)
따라서 레퍼런스 에러가 난다. (참조할 값이 없기 때문임)

선언 라인 전에는 변수를 참조할 수 없다.

함수 호이스팅

함수 표현식

함수를 변수에 담고 있기 때문에 함수 표현식은 변수와 동일하게 동작한다.

함수 선언문

함수 선언문 방식으로 선언하면 선언과 동시에 함수가 생성되어
선언 전에도 함수를 사용할 수 있다

함수 표현식은 변수와 같고, 선언문은 선언 전에도 함수 사용이 가능하다

2. Outer로 스코프체이닝 이해하기


자바스크립트 엔진은 변수값을 어떻게 찾을까?


1. false값인 lamp 저장
2. goTo2F 함수 저장
3. goTo2F 함수 실행 : lamp가 true, false 두개가 있음
-> 뭘로 결정해야 할까? 이를 식별자 결정이라 한다.


식별자를 같은 스코프(컨텍스트?) 안에서 찾고
없으면 outer를 찾아봄.
두번째 컨텍스트에서 찾았을 때는 마지막은 보지 않음. 이를 변수 섀도잉이라고 함

현재 활성화된 실행 컨텍스트는 오직 하나지만,
이전 렉시컬 환경을 가리키는 outer로 타고타고 가서 찾을 수 있음.
이런 스코프들의 연결 리스트스코프 체인이라고 함
타고타고 가서 찾는 과정 자체 -> 스코프 체이닝이라고 함

3. 실행 컨텍스트 정리

실행 컨텍스트 : 코드를 실행하는데 필요한 환경을 제공하는 객체
환경 : 코드 실행에 영향을 주는 조건이나 상태.


스코프가 호출되는 위치와 상관없이, 어디에 선언되어 있느냐에 따라 정적으로 결정됨.
하나의 컨텍스트 개념으로 묶어놔서 엔진은 더 빠르고 효율적으로 식별자를 결정할 수 있음.

실행 컨텍스트는 자바스크립트 엔진이 식별자 결정을 더욱 효율적으로 하기 위한 수단이다!

출처

[10분 테코톡] 💙 하루의 실행 컨텍스트

profile
문제를 해결하고 가치를 제공합니다

0개의 댓글