當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Javascript Object.freeze()和const的區別用法及代碼示例


自發布以來,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 定義一個變量,那麽它的作用域就會被阻塞。


相關用法


注:本文由純淨天空篩選整理自kiranpuli大神的英文原創作品 Difference between Object.freeze() and const in JavaScript。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。