護衛する


リフトの事前定義

  • n.小型巻上装置、昇降装置
  • v.工場内の資材の運搬・組立に用いる、梁上を
  • 移動する.
    最終的にはhoistというものを「引き上げる」と言うことができます.

    Hoisitng


    ハウスティンはECMAScript 2015(ES 6)に登場した.
    解析器は、コードを実行する前に宣言をドラッグ&ドロップするだけで、初期化ではありません.
    宣言された関数を囲む最上位またはグローバル範囲(global scope)に移動します.
    console.log("물은 역시 " + water);
    var water = "삼다수";

    実行後、エラーではなくundefinedの出力であることを確認できます.
    エスケープが発生すると、コードは次のように解釈されます.
    var water;
    console.log(water);
    water = "삼다수";

    狙いを定める


    1. var


    ex) var vs let
    varNum = 6;
    varNum += 7;
    var varNum;
    
    console.log("var로 선언한 varNum : " + varNum);
    
    letNum = 6;
    letNum += 7;
    let letNum;
    
    console.log("let으로 선언한 letNum : " + letNum);
    
    varと宣言されたvarNum変数では、転送エラーが発生しますが、letと宣言されたletNumを使用するとエラーが発生します.

    let,cont変数がハイライトされない理由


    すべての宣言書が転載されます.var宣言部はundefinedに初期化され、letconst宣言部はuninitalized状態に保持される.letconst変数は、割り当て時にのみ初期化されます.つまり、割り当てが完了するまでJavaScriptエンジンは変数にアクセスできません.宣言と初期化の前にTemporal Dead Zoneと呼ばれています.

    2.関数宣言


    ex)関数宣言文vs関数式
    hoisted();
    
    function hoisted() {
        console.log("함수 선언문 호이스팅");
    }
    
    notHoisted();
    
    var notHoisted = function() {
        console.log("함수 표현식");
    }

    ハウスティンは次のように起きた.最終的には、notHoisted変数は関数ではないため、エラーが発生します.
    var notHoisted;
    
    notHoisted(); ///TypeError
    
    notHoisted = function() {
      console.log("함수 표현식");
    }

    n/a.結論

    undifinedまたはreference errorを回避するためには、常にスキャン領域内の最上位レベルで宣言および初期化することが推奨される.
    リファレンス
    https://developer.mozilla.org/ko/docs/Glossary/Hoisting
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/var
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/function
    https://blog.bitsrc.io/hoisting-in-modern-javascript-let-const-and-var-b290405adfda