const定義的物件,其屬性是否可以改變

2021-10-25 02:08:03 字數 906 閱讀 5398

今天參加了乙個面試,面試官問我const 定義乙個物件,然後修改他的屬性值可不可以,我想都沒想,直接回答不可以,const不是定義常量的嗎?怎麼可以修改?面試官微微一笑……

面試結束後,查閱了一下const的定義,才明白了他的原理。

const是用來定義常量的,而且定義的時候必須初始化,且定義後不可以修改。對於基本型別的資料來說,自然很好理解了,例如 const pi = 3.14。如果定義的時候不初始化值的話就會報錯,錯誤內容就是沒有初始化。具體的錯誤資訊如下圖:

如果我們修改const定義的常量也是會出現錯誤的,提示的錯誤如下圖:

可見,const定義的基本資料型別的變數確實不能修改,那引用資料型別呢?

先看乙個演示:

p物件的name屬性確實被修改了,怎麼理解這個現象呢?

因為物件是引用型別的,p中儲存的僅是物件的指標,這就意味著,const僅保證指標不發生改變,修改物件的屬性不會改變物件的指標,所以是被允許的。也就是說const定義的引用型別只要指標不發生改變,其他的不論如何改變都是允許的。

我們試著修改一下指標,讓p指向乙個新物件,結果如下圖:

即使物件的內容沒發生改變,指標改變也是不允許的。

所以還是有必要記一記的,爭取下次不會出現這種情況,哈哈哈哈……

const定義的物件屬性是否可以改變

在作業盒子面試的時候問到了乙個問題,const定義的物件屬性是否可以改變。當時沒有考慮就回答了不可以,面試官微笑著回答說錯了。回來後檢視了一下const的定義,明白了其中的原理。const是用來定義常量的,而且定義的時候必須初始化,且定義後不可以修改。對於基本型別的資料來說,自然很好理解了,例如 c...

const定義的物件屬性是否可以改變

在作業盒子面試的時候問到了乙個問題,const定義的物件屬性是否可以改變。當時沒有考慮就回答了不可以,面試官微笑著回答說錯了。回來後檢視了一下const的定義,明白了其中的原理。const是用來定義常量的,而且定義的時候必須初始化,且定義後不可以修改。對於基本型別的資料來說,自然很好理解了,例如 c...

const定義的物件屬性是否可以改變?

大家都知道const定義的變數存在塊級作用域,且不存在變數提公升,一般用於定義常量,定義的時候必須初始化。const定義的如果是基本資料型別 string,number,boolean,null,undifined,symbol 定義後就不可再修改,如果修改,會報錯。那麼如果是const定義的物件呢...