CH.2 실행 컨텍스트
✅ 실행 컨텍스트
- 실행할 코드에 제공할 환경 정보들을 모아놓은 객체
- 자바스크립트 코드를 실행하는 순간 전역 컨텍스트가 콜 스택에 담긴다.
- 하나의 실행 컨텍스트를 구성할 수 있는 방법으로는 전역공간, 함수 실행이 있다. (eval() 함수는 사용을 지양하는 함수이므로 제외)
- 전역 공간을 둘러싼 외부 스코프가 존재할 수 없으므로 스코프체인 상에는 전역 스코프 하나만 존재함.
- 함수가 호출 되면(선언X 호출ㅇ) 해당 함수의 실행 컨텍스트를 콜 스택에 담는다.
- 콜 스택에 쌓인 컨텍스트들은 위에서부터 실행을 마치고 사라지고, 다시 남아있는 컨텍스트를 실행하는 형태
✅ 호이스팅
- 변수 선언만 끌어올리고 할당은 기존 자리에 그대로 남음.
- 함수는 전체를 끌어올린다.
- var로 선언된 변수의 경우 호이스팅 시 undefined로 변수가 초기화 됨
- const와 let으로 선언된 변수의 경우 호이스팅이 되어도 변수가 초기화되지 않는다.
- let과 const로 선언한 변수도 호이스팅 대상이지만, var와 달리 호이스팅 시 undefined로 변수를 초기화하지는 않음. 따라서 변수의 초기화를 수행하기 전에 읽는 코드가 먼저 나타나면 예외가 발생. (참조에러 ReferenceError 발생)
- 호이스팅이 끝난 상태에서의 함수선언문은 함수명으로 선언한 변수에 함수를 할당한 것 처럼 여길 수 있다(=함수표현식)
- ⭐️❗️https://hanamon.kr/javascript-호이스팅이란-hoisting/ let 호이스팅 설명이 잘 되어있는 포스팅
✅ 함수선언문 & 함수 표현식