[javascript] 실행 컨텍스트와 스코프의 유효 기간은 어떻게 결정되는가?

자바스크립트에서 실행 컨텍스트(execution context)란 코드가 실행되는 환경을 말합니다. 각 실행 컨텍스트는 전역 실행 컨텍스트와 함수가 호출될 때마다 생성되는 함수 실행 컨텍스트로 나뉩니다. 실행 컨텍스트 내에서 변수와 함수에 접근할 수 있는 유효 범위를 스코프(scope)라고 합니다.

실행 컨텍스트의 생성

함수가 호출될 때마다 새로운 함수 실행 컨텍스트가 생성됩니다. 이때 외부 함수를 호출할 때 생성된 스코프 체인(outer lexical environment)이 현재 실행 중인 코드의 스코프 체인으로 사용됩니다. 이로써 현재 실행 컨텍스트의 스코프에 외부 함수의 변수와 함수에 접근할 수 있게 됩니다.

스코프의 유효 기간

함수 실행 컨텍스트가 생성될 때 해당 스코프는 그 함수가 실행될 때까지 유효합니다. 함수 실행이 완료되면 해당 실행 컨텍스트와 스코프는 파기됩니다. 그러나 전역 실행 컨텍스트의 스코프는 프로그램이 종료될 때까지 유효합니다.

따라서, 실행 컨텍스트스코프는 코드 블록이 실행되는 동안 해당하는 함수의 호출 상태에 따라 유효 기간이 결정됩니다.

참고 자료: