JavaScript 中的常數物件:了解不可變屬性
儘管ES6 中存在常數關鍵字,但您似乎可以修改JavaScript 中的常量對象。這可能令人費解,特別是考慮到規範聲稱的不變性。那麼,這是怎麼回事?
首先,正如 MDN 文件所闡明的,constant 關鍵字禁止常數本身的重新賦值和重新聲明。但是,當修改物件或陣列時,您不會重新指派或重新聲明它。相反,您只需操作物件的屬性或陣列的元素。
考慮以下範例:
const x = {}; x.foo = 'bar'; // Adds a property to an existing object
const y = []; y.push('foo'); // Appends an element to an existing array
在這兩種情況下,常數物件 (x) 和陣列 ( y) 保持相同的參考號碼。您並不是更改物件本身,而是要新增或修改其元素。這是允許的,因為它不會違反常數引用的不變性。
但是,仍然會阻止重新分配或重新聲明:
const x = {}; x = {foo: 'bar'}; // Error: Reassigning a constant
const y = ['foo']; const y = ['bar']; // Error: Re-declaring a constant
因此,雖然您可以修改常數物件的屬性或常數數組的元素,不能替換或重新定義引用本身。
以上是為什麼 JavaScript 中可以修改常數物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!