실행 컨텍스트란 어떤 코드를 실행하기 위해 필요한 환경의 정보들을 모아놓은 객체이다.
실행 컨텍스트는 코드가 실행될 때 (콜 스택에 저장될 때)VariableEvironment, LexicalEnvironment, ThisBinding에 대한 정보들을 모아놓는다.
호이스팅은 실행 컨텍스트의 이해를 돕기 위해 만든 '추상적 개념'이다. (실제 동작 방법이 아님)
호이스팅이란 함수가 실행될 때 LexicalEnviroment를 위로 끌어 올려주는 개념이다.
const function a () {
let a = 1;
console.log(a);
let a;
console.log(a);
} ///hoisting 이전
const function a () {
let a;
a= 1;
console.log(a);
console.log(a);
} //hoisting 이후