Temporal Dead Zone(TDZ)란 '일시적 사각지대'란 의미로 변수의 스코프와 관련있다.
자바스크립트는 ES6에서 도입된 let, const를 포함한 모든 선언을 호이스팅한다.
호이스팅은 var선언문이나 function선언문 등을 유효 범위의 최상단으로 끌어올리는 것을 말한다. (2020/02/29 - 호이스팅 - 변수, 함수)
하지만 var로 선언된 변수와 달리 let으로 선언된 변수는 선언문 이전에 참조하면 에러가 발생한다.
console.log(name); // output: undefined
var name = "KMJ";
console.log(today); // output: Uncaught ReferenceError: today is not defined
let today = "4월 16일";
let은 var와 거의 비슷하지만, let과 const은 블록 스코프이고, var는 함수 스코프라 그렇다.
if (true) {
var name = "kmj";
console.log(name); // output: kmj
}
console.log(name) // output: kmj
if (true) {
let today = "4월 16일"
console.log(today); // output: 4월 16일
}
console.log(today); // output: Uncaught ReferenceError: today is not defined
함수 안에 선언된 let은 함수 밖으로 나오지 못한다.
함수 밖에서 let으로 선언된 변수명과 함수 안에서 let으로 선언된 변수명이 같더라도 컴퓨터는 이를 다르게 인식한다.
let today = "4월 14일"
if (true) {
let today = "4월 16일"
console.log(today); // output: 4월 16일
}
console.log(today); // output: 4월 14일
따라서, let으로 선언된 변수는 스코프의 시작에서 변수의 선언까지 TDZ(일시적 사각지대)에 빠진다.
'■ 프로그래밍 > JavaScript' 카테고리의 다른 글
Object (3) - 접근법 (0) | 2020.05.05 |
---|---|
재귀(Recursion) (0) | 2020.04.25 |
Object (2) - 중첩객체 접근 (0) | 2020.03.26 |
Object (1) - 접근, 할당 (0) | 2020.03.25 |
isNaN() (0) | 2020.03.25 |