1 let 聲明的變量只能本身讀取不能和var聲明的混淆數組
2 只要有let聲明的代碼塊裏,在聲明的變量前調用就會報錯數據結構
3 同一個變量不能聲明2次指針
const :code
1 做用域相似let對象
2 聲明的常量不可改變,基本類型數據也是內存
3 const
實際上保證的,並非變量的值不得改動,而是變量指向的那個內存地址不得改動。對於簡單類型的數據(數值、字符串、布爾值),值就保存在變量指向的那個內存地址,所以等同於常量。但對於複合類型的數據(主要是對象和數組),變量指向的內存地址,保存的只是一個指針,const
只能保證這個指針是固定的,至於它指向的數據結構是否是可變的,就徹底不能控制了。所以,將一個對象聲明爲常量必須很是當心。作用域
4 可是能夠改變對象性值和添加屬性 不能賦值新的對象和數組字符串
5 若是真的想將對象凍結,應該使用Object.freeze
方法。io
頂層對象function
1var
命令和function
命令聲明的全局變量,依舊是頂層對象的屬性;另外一方面規定,let
命令、const
命令、class
命令聲明的全局變量,不屬於頂層對象的屬性。