JavaScript第一、var/let/contの宣言と割り当て、ハイライト


💁🏻 var/let/constとは?

javascript 관련 문서를 검색하다보면 글마다 변수의 선언 키워드가 다른걸 볼 수 있는데, 
ES6(ECMAScript6) 부터 let, const가 추가 됐고, 그 이전에는 var만 사용됐다. 
아래에서 let와 const가 추가된 이유와 각각의 선언 키워드들을 비교해보자!

📌 変数#ヘンスウ#


変数はその名の通り「変数」であり、JavaScriptでは、変数は特定のフォーマット(String,Integer)値を格納する空間またはメモリに名前を付けます.
まず、変数の作成フェーズは、次の3つのフェーズに分けられます.
  • 宣言:変数名を登録し、スコフが参照するオブジェクトを作成します.
  • 初期化:変数を格納するためにスペースを残すには、次のような変数が含まれます.
    未定義に初期化します.
  • 割当て
  • :未定義の初期化変数に実値を割り当てるステップ
  • 変数の生成フェーズに従って、宣言フェーズと初期化フェーズが同時に発生し、初期化フェーズにvarが割り当てられる.

    また、同じ変数名の重複宣言や再割り当てが可能であるため、必要に応じて使用を宣言することができるが、既存の宣言変数の存在を忘れて再割り当てするという致命的な欠点がある.undefinedは、以下に示すように、変数宣言の前に出力することもできる.

    上記のコードでは、varが1番目に位置するが、console.log()を出力するのは、変数の宣言がundefinedより先に実行されるためである.この動作を「Hosting」と呼ぶ.
    換言すれば、エスケープとは、実際のコードの位置は変わらないが、すべての変数の宣言が最上位に引き上げられて実行されるスキャン内部の任意の場所で発生することを意味する.
    したがって、上記のコードの実行結果は以下のようになります.
    console.log()letでも護衛が発生します.まず、constは宣言と初期化によって別々に実行される.反発により、変数letが最初に宣言され、実際のコードに到達したときに初期化されるため、初期化前にaで変数を参照するとconsole.logが生成される.

    なお、ReferenceError: a is not definedは再割当可能であるが、letのように再宣言することはできない.varでは、宣言、初期化および割当ては同時に行われ、起動後に初期化が行われないため、constが先に実行されるとconsole.logが生成される.
    ReferenceError: Cannot access 'a' before initializationとは異なり、constは再割り当ておよび再宣言することはできません.constを宣言する場合は、宣言と初期化を同時に行わなければなりません.そうしないと、letが発生します.

    📌 整理する

    Uncaught SyntaxError: Missing initializer in const declarationvarletはいずれも変数宣言のためのキーワードであるが、constを使用せず、変数再割り当てを必要としない場合はvarを使用することを推奨し、再割り当てが必要な場合はconstを使用することを推奨する.

    補足が必要