선언이 코드 실행 보다 먼저 메모리에 저장되는 과정으로 인한 현상
코드 실행 전 변수선언/함수선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상
코드 실행 전 이미 변수선언/함수선언이 저장되어 있기 때문에 선언문보다 참조/호출이 먼저 나와도 오류 없이 동작한다.
함수는 전체 함수에 대한 참조와 함께 저장되기 때문에 함수를 만든 라인 이전에도 호출 가능var 키워드로 선언된 변수와 달리 let,const 키워드로 선언된 변수를 선언문 이전에 참조하면 참조 에러(ReferenceError)가 발생!!console.log(sum(1,2)) //3
console.log(c) // undefined
console.log(b) // ReferenceError: b is not defined
console.log(a) // ReferenceError: a is not defined
function sum(x,y) {
return x + y;
}
const a
let b
var c
위의 현상은 var 키워드로 선언된 변수는 선언과 함께 undefined로 초기화되어 메모리에 저장되지만
let,const 키워드로 선언된 변수는 초기화되지않은 상태로 선언만 메모리에 저장되기 때문..🙄