2026-01-07
실행 컨텍스트
정의
자바스크립트 코드가 실행되기 위해 필요한 환경 정보를 담아두는 객체다.
언제 생성되나?
- 전역 코드 실행 시 → 전역 실행 컨텍스트
- 함수 호출 시 → 함수 실행 컨텍스트
- eval() 실행 시 (거의 안 씀)
실행 컨텍스트 생성 단계
- 생성 단계: 코드 실행 전에 미리 환경을 만든다.
- 변수 / 함수 선언 수집 (호이스팅)
- 스코프 체인 생성
- this 바인딩 결정
- 실행 단계
- 코드가 위에서 아래로 실행
- 변수에 실제 값 할당
- 함수 실행
실행 컨텍스트 구성 요소
- Lexical Environment
- 변수, 함수 선언
- 스코프 체인 관리
- Variable Environment
- var 변수 관리
- this 바인딩
- 호출 방식에 따라 결정
실행 컨텍스트 스택 (Call Stack)
- 실행 컨텍스트는 스택 구조로 관리됨
- 함수 호출 → push
- 함수 종료 → pop
스코프와 실행 컨텍스트
| 구분 | 스코프(Scope) | 실행 컨텍스트(Execution Context) | | — | — | — | | 의미 | 변수에 접근할 수 있는 범위를 결정하는 규칙 | 코드가 실행되기 위해 필요한 환경 정보 | | 성격 | 정적(Static) | 동적(Dynamic) | | 기준 | 선언 위치 기준 (렉시컬 스코프) | 실행 시점 기준 | | 생성 시점 | 코드 작성 시 결정 | 코드 실행 시 생성 | | 생성 단위 | 함수, 블록(let/const) | 전역 코드, 함수 호출 | | 관리 대상 | 변수 접근 가능 여부 | 변수, 함수, this, 스코프 체인 | | 개수 | 코드 구조에 따라 고정 | 실행 흐름에 따라 계속 생성/제거 | | 대표 예시 | 함수 스코프, 블록 스코프 | 전역 실행 컨텍스트, 함수 실행 컨텍스트 |
스코프는 “어디서 접근 가능한가”를 결정하는 규칙이고, 실행 컨텍스트는 “어떻게 실행되는가”를 관리하는 실행 환경이다.
참고자료
인터넷 창에 www.google.com를 입력하면 무슨 일이 일어나는지 설명해주세요.
- URL 파싱 (브라우저)
- 브라우저가 입력값 분석
- 프로토콜: https
- 호스트(도메인): www.google.com
- 경로: / (기본)
- 요약: “어디에, 어떤 방식으로 요청할지” 결정
-
DNS 조회 — IP 주소 찾기
도메인은 사람이 읽기 쉬운 주소, 실제 통신은 IP 사용
조회 순서(캐시된 DNS 기록을 먼저 확인):
- 브라우저 캐시
- OS 캐시
- 공유기 캐시
- ISP DNS 서버
- Root → TLD → Authoritative DNS
결과: IP 주소 획득 (www.google.com → 142.xxx.xxx.xxx)
-
TCP 연결 (3-way Handshake)
신뢰성 있는 연결 수립: 브라우저가 SYN 패킷을 보내고, 서버가 SYN-ACK 패킷을 보내며, 다시 브라우저가 ACK 패킷을 보내는 과정
-
TLS Handshake (HTTPS)
보안 통신을 위한 암호화 설정
- 서버 인증서 검증
- 대칭키 생성 및 교환
- 이후 데이터 암호화 통신
-
HTTP 요청:
브라우저는 웹 서버에게 HTTP GET 요청을 보냄 (이 요청에는 브라우저의 사용자 에이전트 정보와 다양한 헤더가 포함될 수 있음)
-
서버 응답:
웹 서버는 브라우저의 요청에 대한 응답으로 HTML 문서와 함께 다양한 리소스(HTML, CSS, JavaScript, 이미지 등)를 반환
-
브라우저 렌더링:
브라우저는 받아온 HTML, CSS, JavaScript 등의 리소스를 해석하여 웹 페이지를 렌더링하고 화면에 표시
(DOM생성-> CSSOM생성 -> Render Tree 생성 -> Layout -> Paint -> Composite)