溫馨提示×

關(guān)鍵字const和readonly的區(qū)別

小云
90
2023-09-01 14:49:31
欄目: 編程語言

關(guān)鍵字const和readonly都用于聲明只讀變量或只讀屬性,但它們的用法和作用有所不同。

  1. const關(guān)鍵字:
  • 可以用于變量和屬性聲明。

  • 聲明的變量或?qū)傩缘闹翟诰幾g時確定,并且在整個程序執(zhí)行過程中不可修改。

  • 在變量聲明時必須進行初始化,且初始化后的值不能再改變。

  • 適用于基本數(shù)據(jù)類型、枚舉、字符串字面量和對象字面量。

示例:

const PI = 3.14159;
const person = { name: 'John', age: 25 };
person.age = 30; // Error: 不能修改const聲明的對象引用
function printNumber() {
const x = 10;
x = 20; // Error: 不能修改const聲明的變量
console.log(x);
}
  1. readonly關(guān)鍵字:
  • 只能用于屬性聲明。

  • 聲明的屬性只能在聲明時或構(gòu)造函數(shù)中初始化,并且在整個對象的生命周期中不可修改。

  • 適用于類的成員屬性。

示例:

class Person {
readonly name: string;
constructor(name: string) {
this.name = name;
}
changeName(newName: string) {
this.name = newName; // Error: 不能修改readonly聲明的屬性
}
}
const person = new Person('John');
person.name = 'Jane'; // Error: 不能修改readonly聲明的屬性

0