실행 컨텍스트
자바스크립트의 동작 원리를 담고 있는 핵심 개념.
약간 과장 광고 느낌이 큰데, 잘 이해하면 아래의 개넘을 이해할 수 있다고 한다..😓
- 스코프 기반으로 식별자에 바인딩된 값을 관리하는 방식
- 호
(우)이스팅이 발생하는 이유
- 클로저의 동작 방식
- 테스크 큐와 같이 동작하는 이벤트 핸들러
- 비동기 처리의 동작 방식
💬 사족
이번 파트는 이해하는데 시간이 걸렸다.. 아니 이해가 안되는 부분도 있었음..
분명 한국말인데 이해하기가 힘들다.............................
아무래도 저작자가 과장광고가 심하다. 이해해야 이해를 하는데 말이지🙄
이번 파트는 딥하게 들어가는 부분은 쳐내고 최대한 풀어서 작성했다.
소스코드의 타입
대략 타입별로 소스코드가 생성되고 실행되는 과정을 알랴줌
- 전역코드
전역 코드는 최상위 스코프인 전역 스코프를 생성한다. 그리고 전역 변수와 전역 함수를 전역 객체의 프로퍼티와 메서드로 바인딩하고 참조하기 위해 연결된다. 전역 코드가 평가되면 전역 실행 컨텍스트가 생성된다. (몰루..??)
- 함수코드
함수 코드는 지역 스코프를 생성하고 지역 변수, 매개변수, argment 객체를 관리한다. 그리고 생성한 지역 스코프를 전역 스코프로 스코프 체인으로 연결해준다. 역시 코드가 평가되면 실행 컨텍스트가 생성된다.
- 모듈 코드
모듈 코드는 모듈별로 독립적인 모듈 스코프를 생성한다. 모듈 코드가 평가 👉 실행 컨텍스트 생성
소스코드의 평가와 실행
자바스크립트 소스코드는 2개의 과정을 거친다. 소스코드 평가
와 소스코드 실행
과정을 나누어 처리된다.
- 소스코드 평가
실행 컨텍스트를 생성 후, 변수와 함수 등의 선언문만 먼저 실행하여 생성된 변수나 함수 식별자를 키로 실행 컨텍스트 스코프에 등록한다.
- 소스코드 실행
평가가 끝나면 선언문을 제외한 소스코드를 순차적으로 실행(런타임)한다. 이때 소스코드 실행에 필요한 정보들(스코프에 키로 등록한 변수, 함수 정보들)을 검색하여 가져온다.
그리고 변수 값의 변경 등 소스코드의 실행 결과는 다시 실행 컨텍스트가 관리하는 스코프에 등록된다.
실행 컨텍스트의 역할
위의 과정을 본다면 자바스크립트 엔진의 평과되고 실행되는 과정은 이렇게 정리해 볼 수 있다.
- 전역 코드 평가
변수, 함수 선언문 먼저 실행 👉 실행 컨텍스트 스코프에 등록
- 전역 코드 실행
런타임 시작! 전역 코드가 순차적으로 함수 호출 👉 함수가 실행되면 전역 코드의 실행을 일시 중단하고 함수 내부로 들어 감
- 함수 코드 평가
매개변수, 지역 변수 선언문 실행 👉 실행 컨텍스트 스코프에 등록 this 바인딩도 결정
- 함수 코드 실행
런타임 시작! 함수 코드 실행 👉 스코프 체인을 통해 검색한다. 매개변수, 지역변수 값 할당 후 메소드 호출
🧐 정리
결론, 실행 컨텍스트는 웹 서비스의 런타임이 시작 했을 때 변수의 선언과 함수의 실행 과정, 스코프 체인이 어떠한 과정으로 생성되고 실행되는 과정을 나타낸다. 알아두면 좋은 개념이지만 너무 딥하게 들어가면 머리가 띵할 수도 있으니 읽어두기만 해보자..😉