const爲什麼有時候能改變,有時候改變值又報錯?什麼情況下可用const聲明

const聲明一個只讀的常量。一旦聲明,常量的值就不能改變。

只聲明不賦值,就會報錯。 const命令聲明的常量也是不提升,同樣存在暫時性死區,只能在聲明的位置後面使用

const實際上保證的,並不是變量的值不得改動,而是變量指向的那個內存地址所保存的數據不得改動。對於簡單類型的數據(數值、字符串、布爾值),值就保存在變量指向的那個內存地址,因此等同於常量。但對於複合類型的數據(主要是對象和數組),變量指向的內存地址,保存的只是一個指向實際數據的指針,const只能保證這個指針是固定的(即總是指向另一個固定的地址),至於它指向的數據結構是不是可變的,就完全不能控制了。因此,將一個對象聲明爲常量必須非常小心。

對象類型

  • 引用類型 Object Function
    引用地址,保存的只是一個指向實際數據的指針

  • 基本類型 Number Boolean String undefined null
    地址固定,值就保存在變量指向的那個內存地址

  • 也就是說,const聲明引用類型的對象的話,值是能被改動的
    const聲明基本類型的值就不能改動

const定義引用數據類,不能修改指針指向新的對象 ,但可以修改它指向的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章