script変数


変数の宣言


ES 6以前のJavaScript変数宣言は次のとおりです.varキーワードのみ使用可能ですが、ES 6(ECMAScript 2015)
以降のjavascriptでは、letconstのキーワードが追加されます.
ES 6が出現した後、varを変数宣言に使用することは推奨されない.letを定数とする宣言はconstを用いる傾向にある.

var


ES 6を使用する前に変数を宣言する方法varの場合、代表的な欠点は以下の通りである.
  • hoistingvarキーワードは、順次実行されるJavaScript環境にあります.
    思わぬ結果をもたらす.varキーワードJavaScript実行時より前
    実行されるからです.
  • console.log(foo) //undefined
    var foo = 'bar';
  • function level scopevarキーワードは、ブロック単位を有する他の宣言キーワードとは異なる.
    関数単位を持つ範囲.
  • {
      var bar = 'foo';
    }
    console.log(bar) //'foo'

    割当値

    let foo = 'bar';
    次の変数の宣言式は、2つの動作を連続的に行います.その動作は次のとおりです.
    let foo;
    foo = 'bar';
    let foo = 'bar';と同様の動作が実行されると、JavaScriptはまず識別子fooのメモリ領域を取得し、その後、この値にundefinedを割り当てる.その後、「bar」が再割り当てされます.
    let bar;
    console.log(bar) // undefined
    変数に値を割り当てない場合、JavaScriptはその変数にundefinedを自動的に割り当てます.

    値の再割り当て


    javascriptの変数にデータを再割り当てする操作は、メモリ領域を消去し、新しいメモリ領域を解放するのではなく、再割り当て値をメモリ領域に格納し、メモリに再割り当てされたデータを記録し、変数の名前である識別子を再割り当てすることです.

    ごみ収集器


    上記の値が再割り当てされると、識別子(変数名)が消え、再アクセスできないデータが残り、無限メモリに積み重ねられるのではなく、ゴミ収集器(ゴミ収集器)によって自動的にメモリから解放されます.
    このゴミ収集器が運転時のどの時点で機能するか分かりません.
    単純な変数を除いて、外部からアクセスできないすべてのデータ
    ごみ収集器によって除去され、メモリ漏れを防止する
  • ごみ収集はエンジンによって自動的に実行され、開発者は強制的に実行または阻止することができない.
  • JavaScriptエンジンごとに、ゴミ収集器のアルゴリズムと動作方法が異なります.