자바스크립트에서 실행가능한 코드가 발생하기 위해 필요한 환경
** 실행가능한 코드 = 전역코드, 함수코드, Eval코드
자바스크립트 엔진이 코드를 실행하기 위해 실행에 필요한 정보를 수집함.
** 실행에 필요한 정보 : 변수 선언, 함수 선언, 스코프, this
실행 컨텍스트들은 물리적으로 stack의 형태로 관리됨.
실행 컨텍스트가 담긴 stack은 함수가 호출될때 마다 쌓이고 끝나면 사라짐
실행컨텍스트의 구조
- 변수 객체
- 객체에는 변수, 함수가 있고, 함수 실행 컨텍스트에는 인자(파라미터)도 포함됨
- 함수일 때 는 활성객체, 전역일 때는 전역객체를 가리킴(요것들이 변수 객체라고 보면됨)
- 실행에서 필요한 정보를 담음
- 스코프체인
- 실행컨텍스트의 해당되는 전역/함수가 참조할 수 있는 변수, 함수 선언 등의 정보를 담고 있는 객체의 리스트 (자기자신도 포함됨)
- 즉, 참조할수 있는 함수에 대해 연결이 되어있는 것을 스코프 체인이라고 함.
- this규칙
- 처음에는 전역객체를 가리키고 있다가 함수 호출의 방식에 따라서 this에 할당될 값이 결정됨.
실행 컨텍스트 실행 순서
- 스코프체인 생성과 초기화
- 변수 객체 초기화
- 함수일때는 매개변수 초기화
- 코드 내의 함수 초기화(function xxx (){})형태 일때는 함수 호이스팅이 일어남
- 코드 내의 변수 선언은 호이스팅이 일어남.
- var는 선언과 초기화가 동시에 이루어지기 댸문에 변수의 값 설정은 값을 할당되는 코드가 실행될 떄 할당되고 그 전에는 undefined를 가리킴
- const와 let은 선언과 초기화가 분리되어 일어남. const xxx;를 하기 전에는 선언은 되어있으나 초기화가 되어있지 않기 때문에 에러가 일어남(일시적 사각지대), const xxx로 설정한 코드 라인에서 초기화가 일어남!!!
- this 설정
'자바스크립트' 카테고리의 다른 글
[기타] 매일 보면 좋을 자바스크립트 관련 사이트 (2) | 2021.07.07 |
---|---|
[ES2021] 새로운 기능들 (3) | 2021.06.29 |
[Javascript] Closure(클로저) (0) | 2021.06.01 |
[Javascript] var, let, const (1) | 2021.05.31 |
[Javascript] 이벤트 루프(Event Loop) (0) | 2021.05.28 |
댓글