ES-6 let 和 const 指令

let指令

  • let僅在區塊代碼中有效
  • let的使用不存在變量提高(var的使用存在變量提高)
  • let不可以未聲明先使用
  • 在let的「先使用」到「再聲明」這種不正確的作法狀況下,這個區間稱之爲「暫時性死區」(temporal dead zone,簡稱 TDZ)
  • 在let聲明以前,使用typeof對該變量進行操做仍會出現ReferenceError
  • let在同一個做用域內,不容許重複聲明,(注意:var與let也不可以重複)

    // 報錯
    function () {
    let a = 10;
    var a = 1;
    }
    // 報錯
    function () {
    let a = 10;
    let a = 1;
    }

塊級做用域

  • 塊級做用域中,外層沒法讀取內層的變量
  • 在ES6中,容許塊級做用域中聲明函數,但和let關鍵字相似的是,該函數在塊級做用域以外也不可引用。
  • 塊級做用域的出現,令「當即執行函數表達式(IIFE)」閉包的使用減小。

const指令

  • 對於const來講,只聲明不賦值,就會報錯。
  • const聲明的常量,也與let同樣不可重複聲明。
  • const常量聲明後,會指向一個對象(JS對象、數字對象、字符對象等),這個對象自己不容許改變,但容許給這個對象添加/修改屬性。可以使用const foo = Object.freeze({});建立一個不可修改的freeze,被凍結了的對象。

ES 6 中的變量聲明

  • var
  • function
  • let
  • const
  • import
  • class閉包

    全局對象和屬性

  • var命令和 function命令聲明的全局變量,在ES 6中仍然是全局的屬性
  • let命令、 const命令、class命令聲明的全局變量,不屬於全局對象(window或global)的屬性
  • 全局變量逐步與全局對象的屬性脫鉤函數

相關文章
相關標籤/搜索