1. 程式人生 > 實用技巧 >ES6——let與const

ES6——let與const

  • let (定義變數)

    • 程式碼塊內有效

      {
          let a = 1
          console.log(a)	//1
      }
      console.log(a)	//ReferenceError: a is not defined
      
    • 不能重複宣告

    • 不存在變數提升

  • const (定義常量)

    • 一旦宣告必須初始化
    • 宣告之後不允許改變

    const如何做到宣告初始化後不允許改變的?

    保證變數指向的記憶體地址所儲存的資料不允許改動,對於簡單型別,值就儲存在變數指向的那個記憶體地址,因此 const 宣告的簡單型別的變數等同於那個常量。而複雜型別、變數指向的記憶體地址其實是儲存了一個指向實際資料的指標,所以 const 只能保證指標是固定的,至於指標指向的資料結構變不變就無法控制了,所以使用 const 聲明覆雜型別物件時要慎重

  • 暫時性死區

    程式碼塊內如果存在 let 或則 const ,程式碼塊會對這些命令的變數從塊的開始形成一個封閉作用域。在宣告變數 PI 之前使用它會報錯

    var PI = 'a'
    if(true){
        console.log(PI)//ReferenceError: a is not defined
        const PI = '3.14'
    }