がんばって


ハウスティンとは何ですか。👀


△ホストについて知るためには、まずvar、let、constについて知ります.一番下に整理します.
  • 号クレーン:リフト、リフト
  • 変数の宣言と割り当てを分離し、変数を最上位
  • に昇格させる
  • 関数宣言を最上位
  • に昇格

    変数宣言のみをドラッグ&ドロップし、値割り当てはネストされていないため、第1の動作undefined(値が割り当てられていない変数にアクセス)

    転送優先度

  • 関数宣言>変数宣言
  • 次のコードでは、JavaScriptエンジンの駆動方法について説明します.

    上記のコードはjavascriptエンジンの変数宣言のネストとして理解されます.以下に示します.

    変数宣言と割り当ては分離され、宣言は関数の最上位に昇格します.
  • 変数が次のように割り当てられている場合、変数が優先されます.

  • let,constも所属Scopeの最上端に選ばれた


    ブートと初期化の前に、時間領域Dead Zone(TDZ)領域に属することを宣言します.
    この言葉がどういう意味なのか説明します.
  • 変数宣言第3段階
  • 宣言フェーズ
  • 割り当て前に
  • 初期化ステップ(未定義のステップを割り当てる)が呼び出された場合、未定義出力
  • は定義する.
  • 割当フェーズ
  • var(関数スキャン)

  • 関数レベルスキャン:varと宣言された変数が関数内で有効である
  • 宣言および初期化フェーズ
  • 	var a = undefined; 
    // ( 엄밀히는 값 할당 되지 않은 a에 접근시 undefined가 띄어짐 )
  • 割当フェーズ
  •     a = 10;
    ブロックレベルスキャン:
    外部からアクセスできません.領域変数になります.カッコ内で宣言されたカッコ内でのみ使用可能*カッコ内でアクセス可能

    let(ブロックスキャン)

  • ブロックレベルスキャン:カッコ{}内で有効です.
  • 宣言フェーズ
  • (実際のコードに到達時)初期化フェーズ
  • 割当フェーズ
  • 宣言段階、初期化段階は不利に進行する
    呼び出し前に初期化しないと、Reference Error generation(TDZに閉じ込められている)が表示されます.これは、実際のコードに到達したときに実行されるので、呼び出し前に初期化しないとReference Error(TDZに閉じ込められている)が発生します.


    ホイスティンはスコフ単位で立ち上がった
    上のコードでは、関数内部がスキャンされています.
    上記のコードはJavaScriptエンジンで、以下の宣言ステップが最適化されたと解釈されています.
    let age = 30;
    function showAge(){
      let age // (호이스팅) 아무것도 할당 돼있지 않은 상태
      console.log(age); // 아무것도 할당 안돼있기 때문에 ReferenceError
      age = 20;
    }
    showAge();

    const(ブロックスキャン)

  • ブロックレベルスキャン:カッコ{}内で有効です.
    var、letは、宣言と割り当ての分離を許可します.
    contは+初期化+即時割り当てを宣言する必要があります
    コードが初期化されていないことを示すSyntaxErrorが表示されます.


  • (TDZ)タイムドメインデッドゾーンのクリーンアップ

  • letとconstはTDZの影響を受けます->割り当て前に使用できません
    コードを予測し、潜在的なエラーを減らすことができます.