JavaScript의 TDZ(Temporal Dead Zone)

일시적 데드 존은 컴퓨터가 값으로 변수를 완전히 초기화할 때까지 변수에 액세스할 수 없는 블록 영역입니다.

  • 블록은 여러 문을 그룹화하는 데 사용되는 한 쌍의 중괄호( {...} )입니다.

  • 초기화는 변수에 초기 값을 할당할 때 발생합니다.

  • 임시 데드 존은 letconst 선언에 액세스할 수 없는 기간입니다.

    예시:

    // 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는 정확히 어디에서 시작하고 끝납니까?



    위의 예는 letconst 변수가 어떤 값으로 초기화되기 전에는 액세스할 수 없으며 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에 나를 연결하십시오!

    좋은 웹페이지 즐겨찾기