const宣告常量以及凍結乙個物件

2021-09-13 17:32:29 字數 1215 閱讀 8248

const是es6新增加的關鍵字,作用是宣告乙個唯讀變數。這個變數指向的內容位址是不可以改動的。

const a = 1

a = 4 // typeerror: assignment to constant variable.

let一樣,它也有暫時性死區和塊級作用域的特性。

// 暫時性死區

console.log(b) // referenceerror

const b = 2

// 塊級作用域

if (true)

console.log(c) // uncaught referenceerror: max is not defined

const宣告的值是基礎資料型別(number,string,boolean),那麼這個變數的值就不可以改變。如果值是復合型別(主要是物件和陣列),那麼裡面的屬性或者每一項則可以改變。因為const只能保證這個指標是固定的,但是指向的資料結構則不可以控制。

const d = {}

d.name = '123'

console.log(d.name) // '123'

d = {} // typeerror: "d" is read-only

const f = 

f.push('123') // ['123']

console.log(f) // ['123']

f = // uncaught typeerror: assignment to constant variable.

如果想要將乙個物件給鎖死,應該使用object.freeze

const e = object.freeze({})

// 常規模式時,下面一行不起作用

// 嚴格模式時,該行會報錯 uncaught typeerror: cannot add property name, object is not extensible

e.name = '123'

如果想要徹底鎖死,應該將物件下面的所有屬性鎖死

function freezeobj(obj) 

})}

如何宣告乙個類

什麼是類 類是使用者自定義的引用型別 類的 示例 class pair class pair class pair 可以有結尾分號 類的 解析 你可以使用關鍵字class來宣告類這一使用者自定義的引用型別。類的語法和結構的非常類似。它提供函式 字段 建構函式 操作符和訪問控制。類成員的預設訪問許可權...

乙個字面常量

c 有兩種常數 文字,符號。常量字面值常量文字數字插入 他們是常數,因為你不能改變他們的價值觀。1int x 5 5是乙個字面常量 常量可以字尾,確定其型別。整數常量可以有乙個u或u字尾,意味著他們是無符號的。整數常量也可以有乙個l或者l字尾,這意味著他們是長整數。然而,這些字尾通常是可選的,因為編...

前端如何定義乙個常量

為什麼會這樣?實際上,const定義的變數儲存的是指向實際資料的指標,對於基本資料型別string boolean number undefined null symbol而言,其值儲存在棧記憶體中的簡單資料段,按值訪問,就是等同於常量。但是相對於引用資料型別而言,const只能保證指向儲存在堆記憶...