91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
昆明市| 翼城县| 渝北区| 金山区| 上饶市| 石屏县| 方城县| 镇远县| 双江| 太仓市| 福贡县| 岢岚县| 遂川县| 华宁县| 个旧市| 忻州市| 包头市| 玛多县| 扎囊县| 仙桃市| 南城县| 张家口市| 宁城县| 葵青区| 宾阳县| 灌南县| 丹东市| 海伦市| 大荔县| 康平县| 化州市| 曲阳县| 嘉祥县| 西乌| 德庆县| 洛隆县| 丰台区| 红原县| 鄂托克旗| 榕江县| 佛教|