자바스크립트는 실행될 때 ES6의 LET,CONST를 포함한 모든 선언들을 호이스팅이라고함
호이스팅이란 유효범위의 최상단으로 끌어올리는 것을 의미함
실제로 끌어올려지는것은 아닌데 내부적으로 처리되고 메모리에서는 변화가없음
CONSOLE.LOG(NAME); // undefined
VAR NAME = "HAHA"
변수 NAME을 콘솔로그보다 뒤에 입력했지만 에러가아니라 undefined가뜸
왜? 실행될 때 호이스팅으로 인해 var변수가 가장위로 이동해서 선언되어서그럼
이를 더 잘이해하려면 변수선언 3단계를 이해해야함
변수를 말그대로 선언해서 변수객체에 등록
변수객체에 대한 미모리를할당, 변수는 undefined로 초기화
초기화된 변수에 값을 할당함
함수도 호이스팅이 가능함.
함수선언문으로 정의된 함수는 실행되는 시점에 선언, 초기화, 할당이 한번에 이뤄짐, 그래서 함수호이스팅이 발생해 유효범위 내 어느곳에서도 호출이 가능함