当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。