中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

const和readonly如何保證數據不變

小樊
83
2024-10-12 17:14:19
欄目: 編程語言

constreadonly 都可以用來聲明常量,但它們的使用場景和作用略有不同。

const 用于聲明一個在整個生命周期都不變的變量,即其值在初始化后不能被重新賦值。這意味著 const 變量必須是基本數據類型(如字符串、數字、布爾值等)或者一個不可變的引用類型(如不可變的數組、對象等)。對于引用類型,const 只保證引用本身不變,而引用的對象的內容仍然可以改變。

示例:

const num = 42; // 基本數據類型,不可變
const str = "hello"; // 基本數據類型,不可變
const arr = [1, 2, 3]; // 引用類型,但數組內容不可變
const obj = { key: "value" }; // 引用類型,但對象內容不可變(需要使用 Object.freeze())

readonly 用于聲明一個只讀的屬性,即其值在初始化后不能被重新賦值。readonly 可以用于修飾對象的屬性或者類的屬性。對于修飾對象的屬性,readonly 只保證屬性值不可變,但屬性的引用仍然可以改變。對于修飾類的屬性,readonly 保證屬性值不可變,并且在類的構造函數之外無法修改。

示例:

const obj = {
  key: "value",
  readonly anotherKey: "anotherValue", // 只讀屬性
};

obj.key = "newValue"; // 報錯:TypeError: Cannot assign to read only property 'key' of object
obj.anotherKey = "anotherNewValue"; // 報錯:TypeError: Cannot assign to read only property 'anotherKey' of object

class MyClass {
  readonly myProperty: string;

  constructor(myProperty: string) {
    this.myProperty = myProperty;
  }
}

const instance = new MyClass("initialValue");
instance.myProperty = "newValue"; // 報錯:TypeError: Cannot assign to read only property 'myProperty' of object

總結:

  • const 保證變量本身及其引用的對象內容在初始化后不可變(對于基本數據類型)或不可變引用(對于引用類型)。
  • readonly 保證屬性值在初始化后不可變,但屬性的引用仍然可以改變(對于對象的屬性)或在類的構造函數之外無法修改(對于類的屬性)。

0
南京市| 永泰县| 江孜县| 胶南市| 虹口区| 延川县| 长沙县| 元氏县| 永兴县| 温宿县| 宜春市| 醴陵市| 区。| 伽师县| 襄汾县| 英山县| 崇信县| 兴隆县| 邳州市| 铁岭县| 溧水县| 大名县| 江孜县| 渝中区| 昆明市| 南乐县| 长春市| 苗栗县| 仁寿县| 任丘市| 皋兰县| 莒南县| 玉田县| 南昌县| 石家庄市| 宣威市| 辽宁省| 建始县| 乌恰县| 太谷县| 武义县|