var
로 선언한 변수의 경우 호이스팅 시 undefined
로 변수를 초기화합니다.
반면 let
과 const
로 선언한 변수의 경우 호이스팅 시 변수를 초기화
JavaScript는 초기화를 제외한 선언만 호이스팅합니다. 변수를 먼저 사용하고 그 후에 선언 및 초기화가 나타나면, 사용하는 시점의 변수는 기본 초기화 상태(var
선언 시 undefined
, 그 외에는 초기화하지 않음)입니다.
console.log(aaa)
var aaa = 1;
// undefined
console.log(bbb)
const bbb = 2;
//VM444:1 Uncaught ReferenceError: bbb is not defined
catName()
function catName(){
console.log(`고양이이름`)
}
// VM653:3 고양이이름
cat()
var cat = function() {
console.log(`코콬`)
}
// VM819:1 Uncaught ReferenceError: cat is not defined
ex_호이스팅
var
, let & const 의 차이선언식
함수는 호이스팅이 가능하다.에러를 볼 수 있어야지 어디가 고장났는지 알 수 있기 때문에 let,const , 다른 함수식을 쓰는 이유(?)
var, 선언식은 접근이 가능하기 때문에 사용 X
호이스팅이란?? 변수/함수의 선언부만 코드의 최상단으로 끌어 올려주는 것이다.
호이스팅 정리
호이스팅이 되더라도 접근을 막는 방법
let
, const
사용 (TDZ 기억) - 템프럴 데드 존표현식을
이용