실행 컨텍스트란?
실행 컨텍스트는 자바스크립트 코드가 평가되고 실행되는 환경을 의미한다.
자바스크립트 엔진은 코드 실행에 필요한 모든 정보를 실행 컨텍스트에 저장한다. 이는 변수, 함수, 선언, this의 값 등을 포함한다.
왜냐하면 실행 컨텍스트는 코드가 실행될 때 필요한 환경 정보를 제공하며, 이는 코드의 실행 흐름을 관리하는데 필수적이기 때문이다. 실행 컨텍스트는 전역 실행 컨텍스트와 함수 실행 컨텍스트로 구분된다.
전역 실행 컨텍스트는 코드가 실행되기 시작할 때 생성되며, 함수 실행 컨텍스트는 함수가 호출될 때 마다 생성된다. 이는 자바스크립트의 스코프와 호이스팅 개념을 이해하는 데 중요한 기반이 된다.
실행 컨텍스트는 콜 스택에 쌓이게 되며, 자바스크립트 엔진은 콜 스택의 최상단에 있는 실행 컨텍스트를 기준으로 코드를 실행한다. 이는 함수 호출 순서와 실행 흐름을 관리하는 데 중요한 역할을 한다.
클로저란?
클로저(Closure)는 함수와 그 함수가 선언된 렉시컬 환경과의 조합을 의미한다. 클로저는 자바스크립트의 강력한 기능 중 하나로, 내부 함수가 외부 함수의 스코프에 접근할 수 있게 해준다.
왜냐하면 클로저를 통해 함수는 외부 함수의 변수에 접근할 수 있으며, 외부 함수가 실행을 마친 후에도 해당 변수를 참조할 수 있기 때문이다. 이는 데이터 은닉과 캡슐화를 구현하는 데 유용하다.
클로저는 자바스크립트에서 비동기 처리, 모듈 패턴, 고차 함수 등 다양한 패턴과 기능을 구현하는 데 핵심적인 역할을 한다. 예를 들어, 이벤스 리스너나 setTimeout에서 클로저를 사용하여 외부 스코프의 변수를 참조할 수 있다.
왜냐하면 클로저는 함수가 선언될 당시의 렉시컬 환경을 기억하기 때문이다. 이는 함수가 실행될 때 마다 새로운 스코프를 생성하는 대신, 기존의 스코프에 접근하여 효율적인 메모리 관리를 가능하게 한다.
실행 컨텍스트와 클로저의 관계
실행 컨텍스트와 클로저는 밀접하게 연관되어 있다. 클로저는 함수가 선언된 실행 컨텍스트의 렉시컬 환경을 캡처하여, 함수가 외부 스코프의 변수에 접근할 수 있게 한다.
왜냐하면 클로저는 함수가 선언된 시점의 실행 컨텍스트를 기억하고, 이를 통해 외부 스코프의 변수를 참조할 수 있기 때문이다. 이는 함수가 실행될 때 마다 해당 실행 컨텍스트에 접근하여 필요한 데이터를 사용할 수 있게 한다.
이 관계는 자바스크립트에서 비동기 처리나 데이터 은닉 등의 기능을 구현할 때 핵심적인 역할을 한다. 클로저를 통해 생성된 함수는 외부 함수의 실행이 종료된 후에도 외부 함수의 변수에 접근할 수 있다.
왜냐하면 클로저는 외부 함수의 실행 컨텍스트가 종료된 후에도 해당 컨텍스트의 렉시컬 환경을유지하기 때문이다. 이는 자바스크립트의 강력한 기능을 가능하게 하는 중요한 매커니즘 이다.
'🎒내가방 > 📒JavaScript' 카테고리의 다른 글
[JavaScript] TDZ(Temporal Dead Zone)와 가비지 컬렉터(Garbage Collector) (0) | 2025.02.19 |
---|---|
브라우저에서 페이지를 렌더링하는 방식 (1) | 2024.12.10 |
[모던 자바스크립트] Ajax와 REST API (0) | 2024.10.23 |
[모던 자바스크립트] this 키워드 (0) | 2024.10.22 |
[모던 자바스크립트] 배열 고차 함수 (sort, forEach, map, filter) (0) | 2024.10.21 |