Hoisting 이란? TDZ란?

jini·2023년 3월 28일
0

CS🎀

목록 보기
3/13
post-thumbnail

🗂 Hoisting 이란?

Hoisting은 JavaScript에서 변수와 함수 선언을 현재 스코프의 맨 위로 이동시키는 것을 말합니다. 이것은 코드의 순서에 상관없이 변수와 함수를 사용할 수 있도록 합니다.

console.log(a) //undefined (아직 변수 할당전이므로)
var a = 1
console.log(a) // 1 (변수의 선언과 초기화를 같이 시켜버림)

cf)var는 전역변수와 지역변수 개념이 확실하지않다는 문제점이 존재.

var는 함수만 지역변수로 호이스팅이 되고, 나머지는 모두 전역변수.

console.log(a) 
let a = 1
console.log(a) 

//ReferenceError

let은 TDZ라는 개념으로!

🗂 TDZ란?

TDZTemporal Dead Zone의 약자이며, 이것은 let과 const 키워드로 선언된 변수가 스코프 내에서 선언되기 전에는 사용될 수 없다는 것을 의미합니다.
TDZ에서 변수에 접근하려고 하면 ReferenceError가 발생합니다.

console.log(a) 
let a = 1
console.log(a) 

//ReferenceError으로 일시적으로 a에 접근할수없다는 존을 만든다고 생각하자!

위 코드에서 a 변수는 아직 선언되지 않았기 때문에 ReferenceError가 발생합니다.
이는 TDZ에 의해 발생합니다. 따라서 변수를 사용하기 전에 반드시 변수를 선언해야 합니다.


정리 다시 필요함 -
컴파일에러와 런타임에러 정리가 필요 -

profile
🌱

0개의 댓글