모던 자바스크립트 딥다이브 스터디 #3-1 (CH 23, 13 - 실행컨텍스트, 스코프)
23장 실행 컨텍스트
실행 컨텍스트를 이해하면 다음의 이해가 편해진다.
- JS가 스코프를 기반으로 식별자와 식별자에 바인딩 값을 관리하는 방식
- 호이스팅이 발생하는 이유
- 클로저의 동작 방식
- 태스크 큐와 함께 동작하는 이벤트 핸들러와 비동기 처리의 동작 방식
소스코드의 타입
ECMAScript의 사양은 JS의 소스코드를 4가지 타입으로 구분한다.
- 전역 코드 - 전역 스코프에 존재하는 소스코드. 함수, 클래스 등의 내부 코드는 포함하지 않는다.
- 함수 코드 - 함수 블록 내부에 존재하는 코드. 이때 중첩된 함수, 중첩된 클래스 등의 내부 코드는 포함하지 않는다.
- eval 코드 - 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드를 말한다.
- 모듈 코드 - 모듈 내부에 존재하는 소스코드를 말한다. 모듈 내부의 함수, 클래스 등의 내부코드는 포함하지 않는다.
왜 소스코드를 4가지 타입으로 구분할까? 소스코드의 타입에 따라 실행컨텍스트를 생성하는 과정과 관리 내용이 다르기 때문
1. 전역 코드 - 전역 스코프
전역 코드는 전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프를 가져야 한다.
또한 전역코드는, var키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수를 전역 객체의 프로퍼티와 메서드로 바인딩하고 참조하기 위해 전역객체와 연결되어야 한다.