const聲明一個只讀的常量。一旦聲明,常量的值就不能改變。
只聲明不賦值,就會報錯。 const命令聲明的常量也是不提升,同樣存在暫時性死區,只能在聲明的位置後面使用
const實際上保證的,並不是變量的值不得改動,而是變量指向的那個內存地址所保存的數據不得改動。對於簡單類型的數據(數值、字符串、布爾值),值就保存在變量指向的那個內存地址,因此等同於常量。但對於複合類型的數據(主要是對象和數組),變量指向的內存地址,保存的只是一個指向實際數據的指針,const只能保證這個指針是固定的(即總是指向另一個固定的地址),至於它指向的數據結構是不是可變的,就完全不能控制了。因此,將一個對象聲明爲常量必須非常小心。
對象類型
-
引用類型 Object Function
引用地址,保存的只是一個指向實際數據的指針 -
基本類型 Number Boolean String undefined null
地址固定,值就保存在變量指向的那個內存地址 -
也就是說,const聲明引用類型的對象的話,值是能被改動的
const聲明基本類型的值就不能改動