[JS]がんばって


✔豪斯婷とは何ですか。


ハウスティンとは何ですか.関数内部の宣言をすべて引き上げ、関数の有効範囲の最上位レベルに宣言します.
関数宣言式、var、let、constはエスケープを引き起こします.
javascriptでは、変数宣言は선언->초기화フェーズで実行されます.
  • 宣言フェーズ:変数名を登録し、JavaScriptエンジン変数の存在を通知します.
  • 初期化フェーズ:メモリ値にメモリ領域を保持し、デフォルトではundefinedが初期化されます.
  • varでは선언과 초기화が同時に発生するため、ハイライトされると未定義が発生する.

    var例)

    
    console.log(a); ////undefined(초기화)
    
    var a = 1
    
    console.log(a); /// 1 
    

    関数宣言の例)

    catName("Chloe"); ///함수호출이 먼저 일어난다
    
    function catName(name) {
      console.log("My cat's name is " + name);
    }
    /*
    위 코드의 결과는: "My cat's name is Chloe" 
    */
    ただし,letとconstについては,エスケープが現れるが,宣言と初期化は別々に行われる.
    信号が現れると、初期化せずに宣言が行われるため、RefeerenceErrorが現れる.
    宣言のみが行われたため、参照エラーが発生しました.(let과 const가 호이스팅이 일어나지 않는다고 착각하지말자!)
     console.log(a);///ReferenceError: a is not defined
    
    let a = 1
    
    console.log(a);

    Temporal Dead Zone


    上記の例に示すように、varおよびlet/constなどの範囲差はTDZによって制約されます.
    すなわち、let/contの場合、変数の初期化前にアクセスしようとするとReferenceErrorが発生する.これは、転送の実行中に発生したエラーです.