반응형
실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념으로 실행 가능한 코드가 실행되기 위해 필요한 환경이라고 말할 수 있다. 이에 따라 호이스팅, 클로저, 스코프 등의 개념 등을 이해할 수 있게 된다.
실행 가능한 코드(소스 코드)
- 전역코드 : 전역에 존재하는 코드
- 함수코드 : 함수 내에 존재하는 코드로 지역 스코프를 생성하고 지역변수, 매개변수 등을 관리한다.
- Eval 코드 : strict mod에서 자신만의 독자적인 스코프 생성
- 모듈 코드 : 모듈별로 독립적인 모듈 스코프 생성
해당 4가지의 실행 가능한 코드를 평가하여 실행 컨텍스트를 생성한다. 소스코드는 실행되기 이전에 평가 과정을 거치며 평가와 실행 두가지 단계로 나뉜다고 볼 수 있다.
렉시컬 환경
렉시컬 환경은 환경레코드, 외부렉시컬 환경으로 구성되는데 특정 코드가 작성되고 선언된 환경을 의미한다.
- 환경레코드 : 렉시컬 환경에서 모든 지역변수를 프로퍼티로 저장하고 있는 객체, 스코프에 포함된 식별자를 등록하고 등록된 식별자에 바인딩된 값을 관리하는 저장소
- 외부 렉시컬 환경 : 외부 코드와 연관된 환경
스코프(전역과 지역)
스코프는 변수에 접근할 수 있는 범위를 의미하는데 유효범위에 따라 크게는 전역 스코프와 지역 스코프로 나뉠 수 있다.
구분 | 설명 | 스코프 | 변수 |
전역 | 코드의 가장 바깥 영역 | 전역 스코프 | 전역 변수 |
지역 | 함수 몸체 내부 | 지역 스코프 | 지역 변수 |
// 전역 스코프와 전역 변수들
const a = 'Lia';
const b = 'Minsu';
function hello() {
// 지역스코프 내의 지역 변수
const c = 'Leo';
function inner() {
// 지역스코프 안의 지역스코프의 지역 변수
const d = 'Cat';
}
inner();
}
hello();
위의 예제처럼 크게는 전역 스코프와 지역 스코프로 나뉠 수 있지만 지역 스코프와 관련하여 블록 레벨 스코프, 함수 레벨 스코프 등의 개념들이 따라 나올 수 있다. 블록 레벨 스코프의 경우에는 함수를 포함한 모든 코드 블록에 의해서 지역 스코프가 생성되지만 함수 레벨 스코프는 코드 블록이 아닌 함수에 의해서만 지역 스코프가 생성된다는 특징을 가지고 있다. 아래 글에서 좀 더 자세하게 살펴볼 수 있다.
2022.11.25 - [웹개발/Javascript] - 전역변수의 문제점, 어떤 문제가 발생할까?(블록 레벨 스코프와 함수 레벨 스코프)
반응형