Hoisting
오래된 자바스크립트 문법 var이나 function의 경우
console.log(child)
var child="철수"
이렇게 코드를 작성했을때 당연히 error가 나야하지만
자바스크립트에서는 undefined가 나오게 됨
자바스크립트는 먼저 변수를 모두 읽어놓고 코드를 한줄씩 실행시켜나가기 때문에 이런 오류가 발생한다.
아래와 같이 맨 윗줄에 미리 변수를 작성해두고 3번째 줄에 오게되면 그때 변수에 철수를 담아줌
child = undefined
console.log(child)
var child="철수"
코드가 짧은 경우에는 상관없겠지만 코드가 길어질 경우 예상치 못한 에러를 발생시키고 찾을수도 없는 코드 무덤을 만들 수 있기 때문에
var는 절대 사용하지 말아야한다
변수를 선언하여 만든 함수나 화살표함수가 아닌 그냥 funciton xxx()로 사용되는 함수들 또한 같은 문제가 발생할수도 있음