es6中常數不可以修改;es中的常數使用const進行聲明,該關鍵字聲明的常數是唯讀的,一旦聲明,不能修改;因為const常數保證值不能被修改,保證的是常數指向的記憶體位址所保存的資料不能被改變,而基本資料型態常數的值就保存在記憶體位址中。
本教學操作環境:windows10系統、ECMAScript 6.0版、Dell G3電腦。
const的定義:是一個只讀的常數,一旦聲明,就不可修改
是否真的不能修改?敲幾段程式碼看一下
由上圖可看到,const定義string常數後,嘗試進行修改,報錯'Assignment to constant variable'再敲幾段程式碼看一下
從上述幾段程式碼可以看出,當const定義的常數為'基本資料型別' 時,不能被修改;當定義的常數為'引用資料型別' 時,我們可以透過其屬性進行資料修改
為何會如此呢?
因為const常數保證值不能被改變,其實保證的是常數指向的記憶體位址所保存的資料不能被修改:
'基本資料型別'的值就儲存在記憶體位址中,所以const定義的'基礎資料型別' 不可被改變。
而'引用數據類型' 指向的內存地址只是一個指針,通過指針來指向實際數據,也就是說,不可被改變的是指針,而不是數據,所以const定義的”引用數據類型的' 常數可以透過屬性來修改值。這就牽扯出堆疊記憶體和堆疊記憶體。
由圖可看出,基本資料型別的變數和值都在'棧記憶體' 中,指向的記憶體位址不可被修改
#引用資料型別的變數儲存在'棧記憶體' 中,值儲存在'堆記憶體' 中,透過指標來指向'堆記憶體' 中對應的值,所以,const定義的引用資料型,不可被改變的是'指標' , 所以可以透過屬性來修改值。
【相關推薦:javascript影片教學、web前端】
#以上是es6中常數可以修改嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!