2022. 11. 15. 13:50ㆍjs
실행 컨텍스트 자바스크립트의 동작원리를 담고있는 핵심개념.
23.1 소스코드의 타입
ECMAScript 사양은 4가지 타입으로 구분한다.
4가지 타입은 소스코드는 실행 컨텍스트를 생성한다.
| 소스코드의 타입 | 설명 |
| 전역 코드 | 전역에 존재하는 소스코드를 말한다. 전역에 정의된 함수, 클래스 내부 코드를 포함하지 않는다. |
| 함수 코드 | 함수 내부에 존재하는 소스코드, 중첩함수, 클래스 내부 코드를 포함하지 않는다. |
| eval 코드 | 빌트인 전역함수 에 전달되어 실행되는 소스코드 |
| 모듈 코드 | 모듈 내부에 존재하는 소스코드, 모듈 내부, 클래스 내부 코드를 포함하지 않는다. |
실행 순서는
function outer() {
function inner() {
console.log("test");
}
inner();
}
outer();
global ec -> outer ec -> inner ec -> back outer, back global의 순서로
쌓이게 된다.
전역코드는 최상위 스코프를 생성하고 전역개체의 프로퍼티와 메서드를 바인딩하기에 전역 객체와 연결된다. 이때 전역 ec 가생성된다.
함수코드는 지역 스코프를 생성하고 지역변수, 매개변수, arguments를 관리한다. 이때 스코프 체인을 연결하는 과정이 있다.
eval 코드는 strict모드에서 독자적 스코프를 만드는데 이때 평가되면 eval ec를 생성한다.
모듈 코드는 모듈별로 독립적인 컨택스트를 생헝한다.
의문점 : 그렇다면 중첩함수의 내부 코드는 어디서 포함되는가?
*23.2 소스코드의 평가와 실행 *
자바스크립트 엔진은 실행에 앞서 평가 과정을 거치며 실행을 준비한다.
즉 평가부와, 실행부가 나뉜다는 이야기
평가에서 함수 선언문, 변수 선언, 식별자를 키로 하여 스코프에 등록한다.
이때 실행에서 변수나 함수의 참조과정을 스코프에서 검색하여 취득 후 결과를 저장한다.
let x = 1일경우
평가부에서 실행 컨텍스트 스코프에
x : undefined 를 등록
실행 부에서
x = 1 일때 x 를 실행컨텍스트 내부에서 참조하여 = 1 을 할당하게 됨.
'js' 카테고리의 다른 글
23장 part3 (0) | 2022.11.15 |
---|---|
23장 실행컨텍스트 part2 (0) | 2022.11.15 |
22장. (0) | 2022.11.15 |
20 Strict mode (0) | 2022.11.13 |
프로토타입 part2 (0) | 2022.11.09 |