var, let, const


1.変数の生成プロセス


📌 ≪初期化|Initialization|Oraolap≫:未定義のステップの割当て
📌 変数:値を含むスペース

const

  • 宣言および初期化フェーズ
  • var

  • 宣言および初期化フェーズ
  • 割当フェーズ
  • let

  • 宣言フェーズ
  • 初期化フェーズ
  • 割当フェーズ
  • 2、変数の特徴と好み


    const


    📌contとして宣言された変数に新しい値を割り当てることはできません。


    var


    📌発表前に使用できます。

    console.log(b) // undefined
    var b = 'bee'
    varでは、上記のコードで次の操作を行います.(3)本当に(1)まで上がったわけではありませんが、動作は引き上げられたようなものです.(がんばって)
    var bug; // (1)
    console.log(bug) // undefined (2)
    bug = 'bee'//(3)
    コンソールにundefinedが表示されるのは、宣言はハイライトされますが、割り当てはハイライトされません.

    📌 宣言された変数を再宣言できます。

    var name = 'Mary'
    console.log(name) // Mary
    
    var name = 'William'
    console.log(name) // William

    3. let


    📌 宣言前は使用できません。

    console.log(bug) // ERROR!!
    // Uncaught ReferenceError: bug is not defined
    let bug = 'bee'
    TDZ:一時死角.TDZの変数は使用できません.letとconstは、TDZの影響を受けるため、割り当て前に使用できません.
    例1
    console.log(bug) // TEMPORAL DEAD ZONE!!! 사용불가
    let bug = 'bee'// 함수의 선언, 할당
    console.log(bug) // 사용가능
    例2
    let dessert = 'cheeseCake';
    function displayDessert() {
    	console.log(dessert) //  TEMPORAL DEAD ZONE
    	
      	let dessert = 'chocolateCake'
    } 
    
    displayDessert() // ERROR!!
    // Cannot access 'dessert' before initialization

    📌 宣言された変数は宣言できません。

    let name = 'Mary'
    console.log(name) // Mary
    
    let name = 'William' // ERROR!!
    // Uncaught SyntaxError: Identifier name has already been declared.
    console.log(name)