hoisting(호이스팅)이란?
JS가 코드 run 전에 선언부를 위로 끌어올리는 과정을 말한다.
ㅤ
ㅤ
ㅤ
console.log(input); var input = ""; ㅤ -> 출력: undifined
var은 선언부와 초기화 둘 다 호이스팅 된다. (할당x)
console.log(input) const input = ""; ㅤ -> 출력: error
let과 const는 선언부만 호이스팅 된다.
let과 const는 선언부와 초기화 사이에 DTZ (Dead Temporary Zone)이 있다.
ㅤ
ㅤ
ㅤ
function 함수명() { //선언식 }
선언식은 선언-초기화-할당 전부 호이스팅 된다!
var 함수명 = function () { //표현식 };
표현식은 TDZ에 걸린다.
화살표 함수도 표현식과 동일하다.
해결법: 표현식 함수와 화살표 함수보다 아래에서 해당 함수를 호출하자.