자바스크립트의 중요한 개념 중 하나인 실행컨텍스트.
실행 컨텍스트란?
실행 코드에 제공할 환경 정보들을 모아놓은 객체.
각 실행 컨텍스트들은 자바스크립트 엔진의 스택에 쌓게 되며 이런 실행 컨텍스트들이 쌓이고 삭제되는 매커니즘에 대해 알고 있으면 자바스크립트 코드 실행 순서를 파악할 수 있게 됩니다.
실행컨텍스트는 언제 생성?
1) 전역 실행 컨텍스트
2) 함수 실행 컨텍스트
3) eval() (사용을 지향)
참고로 전역 실행 컨텍스트는 단 하나만 존재할 수 있고, 함수 실행 컨텍스트는 여러개 존재할 수 있습니다.
실행컨텍스트의 과정
LIFO
(1) 실행컨텍스트 = [ 전역 컨텍스트 ]
(2) 실행컨텍스트 = [ 전역 컨텍스트, outer 함수 컨텍스트 ]
(3) 실행컨텍스트 = [ 전역 컨텍스트, outer 함수 컨텍스트, inner 함수 컨텍스트 ]
(4) 실행컨텍스트 = [ 전역 컨텍스트, outer 함수 컨텍스트 ]
(5) 실행컨텍스트 = [ 전역 컨텍스트 ]
(6) 실행컨텍스트 = [ ]
처음 스크립트 파일 실행 이전부터 실행컨텍스트에는 전역 컨텍스트가 담기게 됩니다.
반면에 함수 실행 컨텍스트는 함수가 호출 될때마다 실행컨텍스트에 담기게 된다는 점을 알 수 있습니다.
4번을 보시면 inner 함수가 끝나자 실행컨텍스트의 inner 함수 컨텍스트가 제거됩니다.
이는 실행컨텍스트의 최상단이 현재 실행중인 컨텍스트를 나타나게 되고, 실행 컨텍스트에 담긴 함수의 실행 컨텍스트의 실행이 종료하게 되면 콜 스택에서 제거된다는 점을 알려줍니다.
또한 마지막 6번째로 가면 더 이상 실행할 함수 컨텍스트들이 없어 전역컨텍스트가 마지막으로 제거되게 됩니다.
참고
https://velog.io/@edie_ko/js-execution-context
https://overcome-the-limits.tistory.com/321
'프로그래밍언어 > JavaScript' 카테고리의 다른 글
자바스크립트로 큐를 구현할 때는 splice 보단 shift (0) | 2022.12.01 |
---|---|
자바스크립트 배열 rotate 구현 (오른쪽, 왼쪽 회전) (0) | 2022.09.17 |
자바스크립트(JavaScript) - 표현식과 문 (0) | 2022.08.03 |
자바스크립트(JavaScript) - 변수 (0) | 2022.08.03 |
자바스크립트(JavaScript) - 스코프(Scope)란? (0) | 2022.07.14 |