JavaScript의 TDZ(Temporal Dead Zone)
블록은 여러 문을 그룹화하는 데 사용되는 한 쌍의 중괄호(
{...}
)입니다. 초기화는 변수에 초기 값을 할당할 때 발생합니다.
임시 데드 존은
let
및 const
선언에 액세스할 수 없는 기간입니다.예시:
// console.log(myLet) // Would throw ReferenceError
let myLet;
console.log(myLet); // undefined
myLet = 10;
console.log(myLet); // 10
이 개념에 대해 자세히 알아보기 전에 .
let과 const는 var와 두 가지 큰 차이점이 있습니다.
var
에 액세스하면 결과가 정의되지 않습니다. 선언되기 전에 let or const
에 액세스하면 throw됩니다ReferenceError:
.console.log(myVar); // undefined
console.log(myLet); // Causes ReferenceError: Cannot access 'myLet' before initialization
var myVar = 1;
let myLet = 2;
TDZ는 정확히 어디에서 시작하고 끝납니까?
위의 예는
let
및 const
변수가 어떤 값으로 초기화되기 전에는 액세스할 수 없으며 let
또는 const
변수가 선언된 블록의 실행 시작 사이의 단계를 보여줍니다. 해당 변수가 초기화되고 있는 것을 변수에 대한 Temporal Dead Zone이라고 합니다.즉, 블록의 임시 데드존은 블록의 로컬 범위 시작 부분에서 시작됩니다. 컴퓨터가 변수를 값으로 완전히 초기화하면 종료됩니다.
그리고 이 영역에서 JavaScript는 누군가 해당 변수에 액세스하려고 하면 항상 참조 오류를 통과합니다.
예시:
let age = 50;
function printAge() {
// age’s TDZ starts here (at the beginning of this block’s local scope)
// age’s TDZ continues here
// age’s TDZ continues here
console.log(age); // returns ReferenceError because age’s TDZ continues here
// age’s TDZ continues here
let age = 22; // age’s TDZ ends here
}
printAge(); // Error
위 코드 결과: 초기화가 완료되기 전에 console.log() 코드를 사용하여 액세스
ReferenceError
했기 때문에 JavaScript는 age
를 반환합니다. 즉, 일시적 데드 존 내에서 age
를 호출했습니다.TDZ의 시작과 끝: 위의 예에서 Temporal Dead Zone은 printAge 함수의 여는 괄호 이후에 시작하여 age 변수 선언 이후까지 계속됩니다.
Temporal Dead Zone은 어디가 아니라
let
변수 또는 const
상수에 액세스하는 시점입니다. Temporal Dead Zone은 let 또는 const 선언 위의 공간이 아니라 시간과 관련이 있습니다.function printAge() {
function log() {
console.log(age);
}
const age = 20;
log();
}
printAge(); // 20
위의 예에서 log()를 호출하기 전에 나이 상수가 선언되고 초기화되어 로그 함수에서 액세스할 수 있습니다.
결론:
일시적 데드 존의 오류를 극복하는 가장 효율적인 방법은 범위의 맨 위에 있는 변수를 초기화하여 코드 실행을 시작할 때 처음에 초기화 부분을 완료한 다음 해당 변수를 사용하는 것입니다. 그렇지 않으면 많은 문제가 발생할 수 있습니다. JavaScript 코드의 예기치 않은 오류.
#JavaScript에서 새로운 개념을 탐색하고 다른 사람과 공유하는 것이 저의 열정이며 사람들을 돕고 영감을 주는 일이 저에게 기쁨입니다. 질문이 있으시면 언제든지 문의해 주세요!
, 및 GitHub에 나를 연결하십시오!
Reference
이 문제에 관하여(JavaScript의 TDZ(Temporal Dead Zone)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/abidullah786/temporal-dead-zone-tdz-in-javascript-30h8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)