自發布以來,ES6 為 JavaScript 帶來了一些新特性和方法。這些新函數包括Object freeze()方法和常量。有時人們會感到困惑Object freeze()方法和常量 但是對象.freeze()和常量是完全不同的。在本文中,我們將解釋這兩者之間的差異。
JavaScript 常量: 常量關鍵字創建一個隻讀參考到一個值。由創建的變量常量關鍵字是不可變的。換句話說,您不能將它們重新分配給不同的值。嘗試重新分配常量變量將導致TypeError.
用法:
const const_name; const x;
示例 1:
Javascript
let myName = "Geeksforgeeks"
console.log(myName)
// Uncaught TypeError
myName = "gfg"
輸出:
Geeksforgeeks
const 關鍵字確保創建的變量是隻讀的。但這並不意味著 const 變量引用的實際值是不可變的。即使 person 變量是恒定的。但是,您可以更改其屬性的值。但是您不能為 person 常量重新分配不同的值。
示例 2:
Javascript
const person = {
name: "Geeksforgeeks"
};
// No TypeError
person.name = "gfg";
console.log(person.name);
輸出:
gfg
Object.freeze()如果您希望 person 對象的值不可變,則必須使用對象.freeze()方法。
用法:
Object.freeze(obj)
示例 1:
Javascript
const person = Object.freeze({name: "Geeksforgeeks"});
// TypeError in strict mode
//in non-strict mode it prints "Geeksforgeeks"
person.name = "gfg";
console.log(person.name)
輸出:
Geeksforgeeks
Object.freeze()方法是淺方法,這意味著它可以凍結對象的屬性,而不是屬性引用的對象。
示例 2:
Javascript
const person = Object.freeze({
name: 'Geeksforgeeks',
address: {
city:"Noida"
}
});
person.address.country = "India"
console.log(person.address.country)
但 person.address 對象不是不可變的,您可以向 person.address 對象添加新屬性,如下所示:
// No TypeError person.address.country = "India";
輸出:
India
結論:
- 常量防止重新分配.
- 對象.freeze()防止可變性.
Object.freeze() |
const |
|
---|---|---|
1. | 對象 freeze() 方法有助於防止現有屬性被更改 | const 是 ES6 (2015) 中引入的關鍵字。 |
2. |
它的語法是-: 對象.凍結(對象) |
如果我們希望某個變量不被聲明兩次,這會很有幫助。 |
3. | 它采用一個參數作為對象。 |
例如 -: 常量 a = 10; |
4. | 它的返回值是一個對象。 | 如果我們用 const 定義一個變量,那麽它就不能被重新賦值。 |
5. | 它還有助於防止將新屬性添加到特定對象。 | 如果我們用 const 定義一個變量,那麽它的作用域就會被阻塞。 |
相關用法
- Javascript Object.freeze( )用法及代碼示例
- Javascript Object.fromEntries()用法及代碼示例
- Javascript Object.assign( )用法及代碼示例
- Javascript Object.create( )用法及代碼示例
- Javascript Object.entries()用法及代碼示例
- Javascript Object.is( )用法及代碼示例
- Javascript Object.isFrozen( )用法及代碼示例
- Javascript Object.isSealed( )用法及代碼示例
- Javascript Object.keys( )用法及代碼示例
- Javascript Object.seal( )用法及代碼示例
- Javascript Object.values( )用法及代碼示例
- Javascript Object.getOwnPropertyDescriptor()用法及代碼示例
- Javascript Object.defineProperties()用法及代碼示例
- Javascript Object.isExtensible()用法及代碼示例
- Javascript Object.getOwnPropertySymbols()用法及代碼示例
- Javascript Object.getOwnPropertyNames()用法及代碼示例
- Javascript Object.setPrototypeOf()用法及代碼示例
- Javascript Object.getOwnPropertyDescriptors()用法及代碼示例
- Javascript Object.defineProperty()用法及代碼示例
- Javascript Object.keys()和Object.entries()的區別用法及代碼示例
- Javascript Object轉Array用法及代碼示例
- Javascript Objects和Prototypes的區別用法及代碼示例
- Javascript Atomics.add( )用法及代碼示例
- Javascript Atomics.and()用法及代碼示例
- Javascript Atomics.compareExchange( )用法及代碼示例
注:本文由純淨天空篩選整理自kiranpuli大神的英文原創作品 Difference between Object.freeze() and const in JavaScript。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。