儘管引用了強調常數不變性的 ES6 規範,但 JavaScript 允許對常數物件執行看似矛盾的操作。當為常數物件分配不同的值時,它保持不變,但在物件內添加或刪除元素似乎是可能的。
根據 MDN 文檔,「常數不能透過重新分配進行更改」和「常數不能重新聲明」。至關重要的是,這意味著對物件的引用是恆定的,而不是物件本身。您不能將新物件指派給常數變量,但可以修改物件的內容。
考慮以下程式碼片段:
const myArray = []; myArray.push(1); console.log(myArray); // Output: [1]
在這種情況下,myArray 陣列的引用保持不變,因為它仍然指向同一個數組物件。但是,push() 操作會為數組添加一個元素,更改其內容,但不會違反常數語義。
類似地,您可以為物件新增屬性不修改所引用的常數物件:
const myObject = {}; myObject.foo = 'bar'; console.log(myObject); // Output: {foo: "bar"}
區分重新分配和修改很重要。重新指派會建立新的引用,而修改則對相同物件引用進行操作。對於常量對象,禁止重新賦值以確保不變性,但仍允許修改對象的內容。
以上是如果 JavaScript 常數是不可變的,那麼該如何修改它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!