咱們都知道const通常聲明一個只讀的常量,聲明以後就不能修改了,而且聲明時必須初始化指針
const message = 'hello' message // hello
const message // ❌報錯SyntaxError: Missing initializer in const declaration
const message = 'hello' message ='world' // ❌報錯TypeError: Assignment to constant variable.
那你們有沒有遇到這樣的狀況code
const dog = {} dog.name = 'wangcai' dog // {name: "wangcai"}
奇怪,上面的例子明明改變了變量的值,爲何沒有報錯?
下面咱們就探究一下const的本質對象
其實const保證的並非變量的值不動,而是變量指向的內存地址不得改動
可能有點抽象,咱們來細細分析一下const聲明的全過程內存
const message = 'hello'
當咱們再次賦值時字符串
message = 'word'
js會將存儲‘word’字符串的地址賦給message,而message又是用const定義的變量,不能夠改變變量裏存儲的內存地址,這時就會❌報錯
而當遇到下面這種狀況it
const dog = {} dog.name = 'wangcai' dog // {name: "wangcai"}
則能夠理解爲
dog中存儲的是對象的房間號(內存地址)
dog.name= 'wangcai',在給對象添加屬性的過程,並無改變這個地址,因此結果正常顯示io
const保證的並非變量的值不動,而是變量指向的內存地址不得改動變量
好啦,以上就是我本次分享的所有內容啦,若是你以爲個人文章對你有一丟丟幫助,那麼請不要吝嗇你的贊👍哦,阿門~gc