令人困惑的常數:為什麼你可以(某種程度上)修改JavaScript 中的常數物件
儘管ECMAScript 6 中對常數有明確的定義,它們被聲明為不能重新分配或重新聲明的不可變值,許多瀏覽器現在支援const關鍵字允許對常量物件進行某些修改。
這種明顯的矛盾源自於 JavaScript 中常量行為的技術細節。雖然您不能直接重新指派或重新聲明常數,但您可以變更常數物件的屬性。
這樣做的原因是,當您從數組中添加或刪除元素,或者添加或更改數組中的屬性時,一個對象,你實際上並沒有改變常數本身。相反,您正在修改常數指向的物件的內部狀態。
例如,在以下程式碼中:
const yyy = []; yyy.push(6); yyy.push(1);
yyy 仍然是對同一數組的引用,但是該數組的內容發生變化。類似地,在以下程式碼中:
const x = {}; x.foo = 'bar';
x 繼續引用同一個對象,但向該對象添加了一個新屬性 foo。
因此,可以修改常數物件的狀態,但不能重新分配或重新聲明常數本身。
以上是你能在 JavaScript 中修改常數物件嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!